KnockoutJS没有更新视图

时间:2013-12-10 15:56:08

标签: javascript knockout.js

我遇到了Knockout的问题,这看起来有点令人费解。

我有一个联系人列表,我想绑定到UI(observableArray) 但是我不需要每个项目本身都是可观察的,因为它们只通过对话框更新,我不需要单独跟踪每个字段。

我有以下jsFiddle来演示我的问题:

http://jsfiddle.net/EsgGg/12/

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上的其他方法使这种类型的东西更容易。

1 个答案:

答案 0 :(得分:2)

Knockout在observable上有一个更改触发器。它被称为valueHasMutated()

contacts.valueHasMutated();

但实际上,如果屏幕上显示的每个值(并且偶尔会发生变化)在视图模型中是一个实际的可观察值,那么你会更好。

contacts()[0].name("James");  // done