我正在尝试将服务器中的元素添加到淘汰赛中的可观察数组中。
这是我的视图模型:
function ArticlesViewModel() {
var self = this;
this.listOfReports = ko.observableArray([]);
self.loadReports = function() {
$.get('/router.php', {type: 'getReports'}, function(data){
for (var i = 0, len = data.length; i < len; i++){
self.listOfReports.push(data[i]);
}
}, 'json');
};
self.loadReports();
};
而且效果很好。但我知道我可以使用 javascript 合并两个数组concat() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat据我所知concat 在淘汰赛中有效 https://stackoverflow.com/questions/19221174/knockout-js-no-concat-on-observablearray。所以当我尝试用 for 循环替换时self.listOfReports().concat(data);
or self.listOfReports.concat(data);
,屏幕上什么也没有出现。
在第一种情况下没有错误,在第二个错误中告诉我没有方法 concat。
那么如何在没有循环的情况下连接数据呢?我真的很高兴听到为什么我的方法不起作用
The observableArray
does not支持concat
方法。请参阅官方支持的文档数组操作方法 http://knockoutjs.com/documentation/observableArrays.html#manipulating-an-observablearray.
然而你可以做的是打电话concat
在底层数组上,然后将新的串联数组重新分配给您的可观察对象:
self.listOfReports(self.listOfReports().concat(data));
The 链接示例 https://stackoverflow.com/questions/19221174/knockout-js-no-concat-on-observablearray有效是因为self.Products().concat(self.Products2())
被循环使用。如果你只是写self.listOfReports().concat(data);
它仍然连接,但你只是丢弃了结果并且不将其存储在任何地方,这就是为什么你需要将其存储回 observableArray。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)