繁体   English   中英

剔除推值数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM