2014-03-26 44 views
0

我想明确地改变敲除可观察值。我试图做这样的事情发生的却是整数写入到变量和观察到的是在写:明确地改变敲除可观察值

self.test = ko.observable(); 

var array = [1,3,4]; 

self.test = array.length; //self.test is no longer an observable, is now an int with value of 3 

我试图做这样的事情太:

self.numOfAsstsInUpdateGrid() = self.dynamicData.length; 

,但我得到的“赋值中的左侧无效”错误

+1

self.numOfAsstsInUpdateGrid(self.dynamicData.length);这样做。可观察就像函数它不是一个属性。 – Akhlesh

+0

@akhlesh酷感谢! – user2202911

+0

Observable是一个函数:)不像一个函数。 – Calvin

回答

0

如果您计划使用数组,我建议使用ko.observableArray。其中有一些漂亮的助手功能,如删除。通过将值传递给observable函数可以改变observable的值。像这样

self.test = ko.observable();

self.test([1,3,4]);

调用函数将返回值。

var length = self.test()。length;

+0

等待,将数组传递给observable隐式地将其转换为可观察数组? – user2202911

+0

这是我的错我的例子是混乱。这样做的原因是因为observable将返回你存储在里面的任何东西。它返回具有length属性的数组。阅读本文, http://knockoutjs.com/documentation/observableArrays.html – Calvin

1
self.test(array.length); 

这会将测试保留为可观察值并将其设置为等于array.length。无论何时设置可观察值的值,都可以在括号中传递所需的值。