可观察数组的元素更改时更新视图

时间:2015-06-23 13:02:56

标签: knockout.js

我的视图显示一个列表组成的对象,所有这些对象都存储在koObservableArray MM.slideWellThumbnails

使用data-bind="foreach: slideWellThumbnails"

显示对象

当只更改了对象的一个​​属性(例如confirmed)时,我无法更新对象的单个视图。

  • 我试着致电:MM.slideWellThumbnails.valueHasMutated();
  • 我已使用:MM.slideWellThumbnails.extend({notify: 'always'});
  • 声明了数组

没有帮助。

我目前正在做的是,制作阵列的副本,清除整个阵列 数组,然后将数据推回到数组。它有效,但我想它并不像KO发明者那样。

MM.slideWellThumbnails()[ +well ].confirmed = confirmed;
MM.slideWellThumbnails1([]);

ko.utils.arrayForEach( MM.slideWellThumbnails(), function(data)
{
    MM.slideWellThumbnails1.push( data );
});
MM.slideWellThumbnails([]);
ko.utils.arrayForEach( MM.slideWellThumbnails1(), function(data)
{
    MM.slideWellThumbnails.push( data );
});

有没有一种有效的方法呢?

1 个答案:

答案 0 :(得分:1)

感谢James Thorpe,我可以解决它:

宣布确认为可观察:

var MyDataStructure= function( /*args*/ ) {
//...
this.confirmed = ko.observable(false)
//...
}

并指定了新值:

//+well for explicitly converting to int from string
MM.slideWellThumbnails()[ +well ].confirmed(confirmed);

谢谢!