我正在尝试将服务器中的元素添加到knockout中的可观察数组中。
下面是我的ViewModel:
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();
};
它运行得很好,但是我知道我可以用concat()和concat works in knockout在javascript中合并两个数组,所以当我尝试用self.listOfReports().concat(data);
或self.listOfReports.concat(data);
替换我的for循环时,屏幕上什么也没有出现。
在第一种情况下没有错误,在第二种情况下错误告诉我没有方法concat。
那么,没有循环,我怎么能对数据进行concat呢?如果我能听到为什么我的方法不起作用,我会非常高兴
2条答案
按热度按时间s4n0splo1#
observableArray
不支援concat
方法。请参阅文件以取得正式支援的数组操作方法。然而,你可以做的是在底层数组上调用
concat
,然后将这个新的连接数组重新分配给你的观察对象:linked example的作用是因为
self.Products().concat(self.Products2())
在循环中使用。如果你只写self.listOfReports().concat(data);
,它仍然是连接的,但你只是丢弃了结果,没有把它存储在任何地方,这就是为什么你需要把它存储回observableArray。plicqrtu2#
在mobx中连接数组另一种方法: