2013-07-24 59 views
0

當我點擊button1我得到的對象與50個聯繫人數組(包含數組與電話號碼,地址...集合,然後當我點擊按鈕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

你能不能請一個jsfiddle展示你想做什麼的完整例子?您發佈的代碼並不清楚。 – mael

+0

我的代碼與jsonp請求太長,thx無論如何幫助 – user2613813

回答

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

    }; 
} 

隨時問更多的解釋。

我希望它有幫助。

+0

Thx的答案,我試圖解決我的問題。 – user2613813

+0

@ user2613813這*確實*解決您的問題。 – Tyrsius