【发布时间】:2014-07-09 00:47:36
【问题描述】:
我有一个名为 textFields 的二维可观察数组:
var t1 = ko.observableArray([{val: 0}, {val:0}])
self.textFields = ko.observableArray([t1]);
我有一个名为 solve 的函数,它应该接受一个参数:
self.solve = function(arr){
console.log(arr);
}
在我的 html 中,我将该函数与链接单击关联,该链接单击将 textFields 作为参数传递给求解:
<a id='solveBtn' href='#' data-bind='click: solve(textFields)'>Solve</a>
我想我现在可以打印出我的 textFields-array。但相反,我得到 []。当我在 Chrome 的调试器中查看变量时,我也只看到 []。这是为什么?为什么 textFields 没有正确传递来解决?
编辑:
我现在让 js 看起来像这样:
self.solve = function(arr){
console.log(arr());
}
但知道我想将这个可观察数组传递给另一个函数(它应该从中生成一个“正常”数组:
var normalize = function(arr){
var retArr = [];
console.log(arr().length);
for(var i = 0; i < arr.length; i++){
var temp = [];
for(var j = 0; j < arr()[i]().length; j++){
temp.push(arr()[i]()[j].val);
}
console.log(temp);
retArr.push(temp);
}
return retArr;
}
console.log(arr()) 给我以下错误:消息:对象不是函数。当我将 arr 视为普通数组时,永远不会执行 for 循环。我猜那是因为 arr[i] 的长度为 0。
非常感谢您的回答!
托尼
【问题讨论】:
标签: javascript arrays knockout.js arguments observable