我有一个包含3个项目的容器对象。每个项目都有一些文本字段(例如:text1,text2,text3,text4)。除此之外,我还有一个计算属性,它根据名为currentItemIndex的属性返回当前项。
所以,基本上,这是'项目模型':
App.Item = Ember.Object.extend({
text1: null,
text2: null,
text3: null,
text4: null
});
这是计算属性
App.currentItemIndex = 0;
App.currentItem = function () {
return App.containerObject[App.get('currentItemIndex')];
}.property('App.currentItemIndex');
模拟数据源看起来像这样:
App.containerObject.pushObject(App.Item.create({text1:'Text 1', text2:'Text 2', text3:'Text 3', text4:'Text 4'}));
App.containerObject.pushObject(App.Item.create({text1:'Text 1', text2:'Text 2', text3:'Text 3', text4:'Text 4'}));
App.containerObject.pushObject(App.Item.create({text1:'Text 1', text2:'Text 2', text3:'Text 3', text4:'Text 4'}));
因此,您可以看到每个项目具有相同的文本值,当我将App.currentItemIndex更改为任何值0,1或2 时,绑定将不会触发某些内容已更改的通知。< / strong>,因为当然属性没有改变,但是对象是新的。
所以问题是: 如何强制触发此通知以相应地更新视图?
答案 0 :(得分:2)
我想知道你如何改变App.currentItemIndex
的价值。你必须在这里使用set方法,例如:
App.set('currentItemIndex', 1)
请注意,您可以使用App.containerObject.objectAt(App.get('currentItemIndex'))
而非访问App.containerObject[App.get('currentItemIndex')]
编辑:这是一个有效的jsfiddle:http://jsfiddle.net/Sly7/c4bA2/69/
我总是使用get / set来访问属性,并在应用程序中声明它们。
答案 1 :(得分:0)
小提琴:here
问题是由removeClass('btn-success btn-danger')
电话引起的。这很奇怪,因为在jQuery Docs它表示你可以一次删除多个类。
所以,如果我只使用removeClass('btn-success')
或removeClass('btn-danger')
,那么一切正常。