【发布时间】:2016-04-15 00:38:05
【问题描述】:
很简单,是否存在通过集合更新来保持子组件状态的最佳实践。这是一个要演示的小提琴:
1.13 http://emberjs.jsbin.com/jazerepuqe/1/edit?html,js,output
如何切换项目高度、添加新项目以及让现有子项保持其状态?我需要编写自定义视图模型管理代码吗?这在较新版本的 Ember 中解决了吗?
【问题讨论】:
标签: ember.js
很简单,是否存在通过集合更新来保持子组件状态的最佳实践。这是一个要演示的小提琴:
1.13 http://emberjs.jsbin.com/jazerepuqe/1/edit?html,js,output
如何切换项目高度、添加新项目以及让现有子项保持其状态?我需要编写自定义视图模型管理代码吗?这在较新版本的 Ember 中解决了吗?
【问题讨论】:
标签: ember.js
您的问题是,每次添加项目时,您都会返回一个静态 heightToggle 属性为 false 的新数组。不如把 baseItems 和 newItems 的结构改成真正拥有 heightToggle 的属性。
baseItems: Ember.A([
Ember.Object.create({text: 'red', heightToggled: true}),
Ember.Object.create({text: 'blue', heightToggled: true}),
Ember.Object.create({text: 'green', heightToggled: true}),
]),
items: Ember.computed.map('baseItems', function(item) {
return Ember.Object.create({
text: item.text,
heightToggled: item.heightToggled
})
}),
actions: {
click() {
this.get('items').forEach(childItem => {
childItem.toggleProperty('heightToggled');
});
},
addItem() {
this.get('baseItems').pushObject(Ember.Object.create({
text: 'yellow' + Math.floor(Math.random() * 100000), // Random identifier
heightToggled: Boolean(Math.floor(Math.random() * 2))}) // Random booleans
);
}
}
});
【讨论】: