当我点击button1时,我得到50个联系人数组的对象(包含带有phoneNumbers,地址......的数组集合),然后当我点击按钮2时,我得到相同的对象,但是我的第一个对象被删除,而我想显示50 + 50 = 100个联系人数组。我尝试了concat方法,但实施起来有些困难。
viewModel.initializeListener = function() {
$('#button1').click(function() {
document.getElementById("button2").style.visibility = "hidden";
$('#retrievedContactsDiv').html('');
nbDisplayedContacts = 0;
console.info("test");
viewModel.ui.FlashbackReport.MoreContacts();
});
$('#button2').click(function() {
viewModel.ui.FlashbackReport.MoreContacts();
console.info("test");
});
}; `
viewModel.WeHaveMoreContacts = function(data) {
console.info("test:", data)
if (viewModel.MoreContacts) {
var newArray=ko.mapping.fromJS(data, viewModel.MoreContacts);
var concatenated = newArray.concat(dataArray);
viewModel.MoreContacts.contacts(concatenated);
} else {
viewModel.MoreContacts = ko.mapping.fromJS(data);
var dataArray = viewModel.MoreContacts.contacts();
}
我有一个参数,其中包含要为服务器跳过的联系人数量。
调用服务器然后调用映射函数的函数:
viewModel.ui.FlashbackReport.MoreContacts()
问题:对象#没有方法'concat'
答案 0 :(得分:1)
我制作了一个fiddle,可能对您有帮助。
该功能的第一部分会生成新的联系人,第二部分会将它们添加到现有的联系人中。
var VM = function () {
var self = this;
self.contacts = ko.observableArray();
self.addMore = function () {
// simulate server response
var offset = self.contacts().length;
var dataFromServer = [];
for (var index = 0; index < 10; index++) {
dataFromServer.push({
name: 'contact ' + offset + index
});
}
// add each new item to existing items.
ko.utils.arrayForEach(dataFromServer, function (item) {
self.contacts.push(item);
});
};
}
随意提出更多解释。
我希望它有所帮助。