Ember学习(5):计算型属性和使用@each聚合数据
来源:互联网 发布:淘宝大学首页 编辑:程序博客网 时间:2024/06/08 06:32
英文原址:http://emberjs.com/guides/object-model/computed-properties-and-aggregate-data/
通常,你可能会定义一个计算型属性,它的值依赖于一个数组中的所有元素的值。比如说,你可能想要对controller中的所有todo项目来计数,以统计它们中的多少是完成了的,下面说明了它可能会是什么样的:
App.TodosController = Ember.Controller.extend({ todos: [ Ember.Object.create({ isDone: false }) ], remaining: function() { var todos = this.get('todos'); return todos.filterBy('isDone', false).get('length'); }.property('todos.@each.isDone')});
注意这里,它依赖的关键字是todos.@each.isDone,其中含有关键字@each。这指示Ember在下列事件发生时,自动为这个计算型属性更新绑定并且触发观察事件:
- 任意一个todos数组中的元素的isDone属性改变时
- 一个新的元素被添加到todos数组
- 从todos数组中删除一个元素
- controller中的todos数组本身被改变以指向不同的数组
在上面的例子中,remaining的值是1
App.todosController = App.TodosController.create();App.todosController.get('remaining');// 1如果我们改变todo的isDone属性,remaining属性的值会自动更新:
var todos = App.todosController.get('todos');var todo = todos.objectAt(0);todo.set('isDone', true);App.todosController.get('remaining');// 0todo = Ember.Object.create({ isDone: false });todos.pushObject(todo);App.todosController.get('remaining');// 1
请注意,@each只能对往下一层生效。你不能对它使用嵌套的形式,比如todos.@each.owner.name或者todos.@each.owner.@each.name。
0 0
- Ember学习(5):计算型属性和使用@each聚合数据
- Ember学习(4):计算型属性
- Ember学习(3):类和实例
- Ember之Computed Properties计算属性
- Ember学习(1):Ember核心概念
- Ember.js 入门指南——计算属性(compute properties)
- Ember学习(6):Observers
- Ember学习(7):Bindings
- Ember学习(2):Ember的命名约定
- Ember旅程系列(八) -- 使用Ember Data
- jquery $().each和$.each()使用
- swift学习记录(计算属性和属性观察者)
- Vuejs-学习记录(二)属性和计算属性
- jquery之操作元素属性和特性(操作元素属性,each()方法的使用)
- json each 数据的使用
- 使用fastjson和xUtils框架来获取聚合笑话数据
- postgresql中获取json数据和聚合函数的使用
- jQuery学习(一)----each遍历&&hasClass属性
- sql一般操作
- 关于计算机基础
- 读书笔记:计算机网路6章:传输层
- Biorhythms
- IT解惑真经
- Ember学习(5):计算型属性和使用@each聚合数据
- 用busybox构建根文件系统及出错总结
- JSTL简单用例及添加标签引用
- Android平台搭建PhoneGap: Hello world !
- Iterator(迭代器)的一般方法
- js浏览器兼容性
- Apache安装说明
- 黑马程序员___运算符,if,switch
- 计算机达人成长之路