我试图比较两个可观察的数组。 但是ko.utils.compareArrays无法为我提供两个可观察数组之间的不同元素。
这是我的fiddle
var ViewModel = function() {
var self = this;
self.y= ko.observableArray(["", "a","b","e","d"]);
self.x = ko.observableArray(["a","b","e"]);
self.differ=ko.utils.compareArrays(x,y);
}
我错过了一些事情。
答案 0 :(得分:1)
应为ko.utils.compareArrays(self.x(),self.y())
未声明x和y。只有self.x和self.y才有。它们也是可观察的数组,因此您需要对它们进行评估,即self.x()
之后,您将注意到差异是在对象中构建的,其中status属性包含不同的值和包含该值的值。要仅显示添加的项目,您可以在视图中使用if。:
<div class='liveExample'>
<ul data-bind="foreach:differ">
<!-- ko if: status == 'added' -->
<li data-bind="text:'\'' + value + '\''"></li>
<!-- /ko -->
</ul>
</div>
此js小提琴将显示添加的项目:http://jsfiddle.net/L8fq57q9/5/