[英]knockout push values array
当我单击button1时,我得到了具有50个联系人数组的对象(包含具有phoneNumbers,Addresses ...的数组的集合) ,然后当我单击按钮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”
我做了一个小提琴 ,可能会对您有所帮助。
函数的第一部分生成新的联系人,第二部分将它们添加到现有的联系人。
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);
});
};
}
随时提出更多解释。
希望对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.