如何从数组元素设置knockout变量

时间:2014-04-28 15:46:59

标签: arrays knockout.js

我有一些手指麻烦:

<p data-bind="text: $root.myArray()[0]"></p>
<hr>
myVal = <span data-bind="text: $root.myVal()></span>    

在viewmodel中:

self.myArray = ko.computed(function() {
    var categories = ko.utils.arrayMap(self.selectedItems(), function(item) {
        return item.id();
    });
    return categories.sort();
});             

self.myVal = ko.observable(self.myArray()[0]);

打印myArray会显示正确的值,但myVal为空。为什么呢?
(是的,我只想要数组中的第一个值。)

另外,当我保存到数据库时,我喜欢它作为一个数字。我需要做一些类型转换吗?

1 个答案:

答案 0 :(得分:1)

差异可能是您在实际填充数组之前将myVal的值设置为数组中的第一个对象。要在console.log(self.myArray()[0])设置之前self.myVal查看此内容,您应该会看到正在设置的内容。由于您只设置了一次它不会订阅数组中的更改。如果你想这样做,你会使用计算。

self.myVal = ko.computed(function () { return self.myArray()[0]; });

只要在myArray

中添加或删除任何内容,就会触发计算