淘汰推送值数组

时间:2013-07-24 08:54:10

标签: javascript knockout.js

当我点击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'

1 个答案:

答案 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);
        });

    };
}

随意提出更多解释。

我希望它有所帮助。