07avalon - 监控数组与非监控属性

简介: 07avalon - 监控数组与非监控属性

监控数组

操作此数组的方法会同步视图的特殊数组,它是由VM中的数组自动转换而来。方便与ms-repeat, ms-each配合使用, 能批量同步一大堆DOM节点。

监控数组的方法与普通数组没什么不同,它只是被重写了某一部分方法,如 pop, shift, unshift, push, splice,sort, revert。其次添加了四个移除方法,remove, removeAt, removeAll, clear, 及ensure,pushArray,set方法。

  1. pushArray(el), 要求传入一数组,然后将它里面的元素全部添加到当前数组的末端。
  2. remove(el), 要求传入一元素,通过全等于比较进行移除。
  3. removeAt(index), 要求传入一数字,会移除对应位置的元素。
  4. removeAll(arrayOrFunction), 有三种用法,如果是一个函数,则过滤比较后得到真值的元素, 如果是一数组,则将此数组中与原数组相等于的元素全部移除;如果没有任何参数,则全部清空。
  5. clear(),相当于removeAll()的第三种方法,清空数组的所有元素。由于需要同步视图的缘故,不能通过vm.array.length = 0的方法来清空元素。
  6. ensure(el),只有当数组不存在此元素时,才添加此元素。
  7. set(index, el),用于更新某一索引位置中的元素,因为简单数组元素的数组,是不会转换它的元素。
  8. toJSON(), 用于取得数组的$model, 2.2.2新添加的方法
var vm = avalon.define({
   $id:'xxx',
   array: [1,2,3]
})
vm.array.push(4,5,6)
vm.array.pushArray([4,5,6])//这个比push方法好用
vm.array.clear()
vm.array.ensure(3) //[3]
vm.array.ensure(3) //[3]
vm.array.ensure(4) //[3,4]

注意,修改某个数组元素必须使用set方法. 如果是修改对象数组的某个元素的属性可以用 vm.array[1].prop = ‘newValue’

<body ms-controller="test">
    <div ms-for="el in @arr">
        {{el}}<button type="button" ms-click="@arr.remove(el)">点我删除该行</button>
    </div>
    <script>
    avalon.define({
        $id: 'test',
        arr: [1,2,3,4,5,6]
    })
    </script>
</body>

非监控属性

这包括框架添加的 $ id, $ events, $ model属性, $ fire, $ watch, $ render方法, 及用户自己设置的以 $ 开头的属性,放在$skipArray数组中的属性,值为函数、各种DOM节点的属性, 总之,改变它们的值不会产生同步视图的效果。

目录
相关文章
|
2月前
|
前端开发 开发者 数据格式
|
4月前
|
存储 程序员 Swift
Swift开发——存储属性与计算属性
Swift推荐使用结构体进行开发,结构体支持属性和方法,且作为值类型。结构体属性包括存储属性(如radius)和计算属性(如r),计算属性不存储值,类似方法。结构体用`struct`定义,命名遵循大驼峰规则。实例名遵循小驼峰规则。属性可在结构体中任意位置定义,静态属性用`static`。存储属性可为`lazy`实现懒加载。结构体实例通过`.`访问属性和方法,静态属性和方法用`结构体名.`访问。计算属性可读写,可通过`get`和`set`定义。程序段1展示了结构体Point和Circle的属性和方法,包括私有属性、只读计算属性、可读写计算属性及`mutating`方法。
32 0
Swift开发——存储属性与计算属性
|
5月前
基于若依的ruoyi-nbcio流程管理系统增加读取节点扩展属性的方法
基于若依的ruoyi-nbcio流程管理系统增加读取节点扩展属性的方法
31 0
|
11月前
|
缓存 JavaScript
计算属性和侦听属性有什么区别?怎样选择
计算属性和侦听属性有什么区别?怎样选择
51 0
|
5月前
|
存储 安全 编译器
【Qt 底层之属性系统】Qt 属性系统全景:深入解析 Q_PROPERTY 宏的核心作用
【Qt 底层之属性系统】Qt 属性系统全景:深入解析 Q_PROPERTY 宏的核心作用
420 2
|
JavaScript 前端开发
计算属性和监视属性的区别
计算属性和监视属性的区别
|
11月前
ECharts分段型视觉映射组件的属性修改
ECharts分段型视觉映射组件的属性修改
59 0
|
SQL JSON 监控
探索 GreatADM:如何快速定义监控探索 GreatADM:如何快速定义监控
1、默认监控粒度不够,业务需要更细颗粒度的监控数据。 2、平台默认的监控命令不适合,需要调整阈值量身定制监控策略。 3、不同类型的实例或组件需要有不同的监控重点,但管理平台监控固化,难以应对多样化的监控需求。 4、只监控系统关键指标,屏蔽不必要的指标,优化 CPU 消耗、网络、采集数据量等,减少资源消耗,提升系统性能。
72 0
|
安全
RxSwift特征序列Driver的使用,以及共享附加作用与非共享附加作用的区别?
RxSwift特征序列Driver的使用,以及共享附加作用与非共享附加作用的区别?
166 0
|
数据可视化 索引
Elastic:使用自定义属性来定义冷热节点时,为什么用include来声明路由时索引无法流转,而用require可以?
ILM中各节点的路由配置要和索引模版中的索引的路由配置方式保持一致:如果ILM中使用的是require,那么索引模版中也要使用require;如果ILM中使用的是include,那么索引模版中也要使用include。
74 0
Elastic:使用自定义属性来定义冷热节点时,为什么用include来声明路由时索引无法流转,而用require可以?