我遇到了Knockout的问题,这看起来有点令人费解。
我有一个联系人列表,我想绑定到UI(observableArray) 但是我不需要每个项目本身都是可观察的,因为它们只通过对话框更新,我不需要单独跟踪每个字段。
我有以下jsFiddle来演示我的问题:
var c = contacts()[0];
c.name="James";
contacts.splice( 0, 1, c );
// the contacts observableArray is now correct but the UI is unchanged
由于某种原因,splice方法不会更新View ??
提前致谢。
我真的认为Knockout应该允许触发器('change')或observables上的其他方法使这种类型的东西更容易。
答案 0 :(得分:2)
Knockout在observable上有一个更改触发器。它被称为valueHasMutated()
contacts.valueHasMutated();
但实际上,如果屏幕上显示的每个值(并且偶尔会发生变化)在视图模型中是一个实际的可观察值,那么你会更好。
contacts()[0].name("James"); // done