比较两个可观察数组尽管有不同的元素,但仍然给出null

时间:2014-10-19 02:22:01

标签: knockout.js

我试图比较两个可观察的数组。 但是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);   

}

我错过了一些事情。

1 个答案:

答案 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/