2

我想将数组传递给 ViewModel 方法:

self.helpMe = function ( myArray ) { 

    for (var i=1, ilen=myArray.length, i<ilen, i++) {
        //do something...
    } 
}

有时我的数组将只包含一个项目,并且从另一种方法调用 helpMe 函数:

self.saveMe = function (item) {

    self.helpMe( item.Topics );

    ...
}

主题定义如下

self.Topics = ko.observableArray([]);

并实例化为带有“with”数据绑定的查询 ui 项。

但是说主题只有一个值 ["Sheeps"] 然后 myArray.length 结果是 6 而不是我想要的 1。我哪里错了?

4

3 回答 3

2

似乎您的 Array 实际上是一个字符串,结果是字符串“Sheeps”的长度

于 2013-10-14T19:51:50.867 回答
1

一个整洁的淘汰工具,你可以尝试代替..

self.helpMe = function ( myArray ) { 
    ko.utils.arrayForEach(myArray(), function () {
        //do something... This iterates through each element of the observableArray
    }
}

请注意,这并不能回答您的问题……只是提出一个在我看来更容易使用/阅读的替代方案。

于 2013-10-14T19:54:21.537 回答
0

我会改变这一行 self.Topics = ko.observableArray([]);

到这一行 self.Topics = ko.observableArray();

和下面的方法

self.helpMe = 函数(myArray){

for (var i=1, ilen=myArray.length, i<ilen, i++) {
    //do something...
} 

}

对此

self.helpMe = 函数(myArray){

for (var i=0, i < myArray.length - 1, i++) {
   self.Topics.push(myArray[i]);
} 

}

于 2013-10-15T02:42:24.427 回答