我有一些手指麻烦:
<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为空。为什么呢?
(是的,我只想要数组中的第一个值。)
另外,当我保存到数据库时,我喜欢它作为一个数字。我需要做一些类型转换吗?
答案 0 :(得分:1)
差异可能是您在实际填充数组之前将myVal
的值设置为数组中的第一个对象。要在console.log(self.myArray()[0])
设置之前self.myVal
查看此内容,您应该会看到正在设置的内容。由于您只设置了一次它不会订阅数组中的更改。如果你想这样做,你会使用计算。
self.myVal = ko.computed(function () { return self.myArray()[0]; });
只要在myArray
中添加或删除任何内容,就会触发计算