与jQuery共存

jQuery是世界上最流行的DOM库,它拥有各式各样的插件,在日常开发中我们可能还是离不开它.因此与它一起使用是常态,下面是一些注意

domReady后如何扫描

  1. $(function(){
  2. var vm = avalon.define({/* */})
  3. //如果你将vm定义在jQuery的ready方法内部,那么avalon的扫描就会失效,需要手动扫描
  4. avalon.scan(document.body) //现在只要传入扫描范围的根节点就行
  5. })

如何AJAX提交数据

提交整个VM

  1. jQuery.ajax({
  2. method: "POST",
  3. url: 'url-adress',
  4. //这里是取vm的数据模型 ,通过JSON.stringify会去掉其所有方法, 变成JSON字符串
  5. //再用JSON.parse变回纯JS对象
  6. data: JSON.parse(JSON.stringify(vm.$model))
  7. })

提交VM中的某个对象属性

  1. data: JSON.parse(JSON.stringify(vm.data.$model))
  2. ``
  3. 提交VM中的某个`数组`属性
  4. ```javascript
  5. data: JSON.parse(JSON.stringify(vm.data.$model))

如何让后台回来的数据更新VM

后台的数据更新VM,只能是更新VM的某些已经定义属性.如果后台数据很大,那么我们可以定义一个空对象(假如后台数据是对象类型)或一个空数组(假如后台数据是数组类型)来占位

  1. var vm = avalon.define({
  2. $id: 'aaa',
  3. array: []
  4. })
  5. jQuery.ajax({
  6. method: "POST",
  7. url: 'url-adress',
  8. data: {/**/},
  9. success: function(data){
  10. vm.array = data.array
  11. }
  12. })

如何同步表单的数据

假如我的某个表单是用于jQuery的日历插件,那么它数据如何同步到vm

  1. $(datepick_input_css_selector).input(function(){
  2. vm.aaa = this.value
  3. })

如何同步复选框在avalon中,checkbox要对应一个数组首选是取得所有同名的checkbox,并要求它们在选中状态,然后用map方法收集它们的value值

  1. $('checkbox').change(function(){
  2. var array = $('checkbox[name="'+this.name+'"]:checked').map(function(){
  3. return $(this).val();
  4. })
  5. vm.checkboxProps = array
  6. })

如何同步下拉框

  1. $('select').change(function(){
  2. vm.selectProps = $(this).val()
  3. })