使用一个元素作为数组传递参数

时间:2013-10-14 19:48:51

标签: javascript knockout.js

我想将数组传递给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”data-bind实例化为查询ui项目。

然而,说主题只有一个值[“Sheeps”]然后myArray.length结果是6而不是我希望它是1。我哪里出错?

3 个答案:

答案 0 :(得分:2)

看起来你的数组实际上是一个字符串,结果是字符串“Sheeps”的长度

答案 1 :(得分:1)

你可以尝试一个整洁的淘汰实用程序..

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

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

答案 2 :(得分:0)

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

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

以及以下方法

self.helpMe = function(myArray){

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

}

到这个

self.helpMe = function(myArray){

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

}