2016-12-28 83 views
0

我通過套接字從Mongodb獲取數據併發送給客戶端, 我使用knockout來綁定,但錯誤不能綁定多次。 你能幫我解決代碼修復代碼套接口io和淘汰賽

代碼:

socket.on('data', function(data) { 
    function getdata() { 
    var stock = []; 
    for (var i = 0; i < data.length; i++) { 
     stock.push(data[i]); 

    } 
    return stock; 
    } 

    var results = getdata(); 
    var ViewModel = { 
    stocks: ko.observableArray(results) 
    }; 

    $(function() { 
    ko.applyBindings(ViewModel, $("#stock").get(0)); 
    }); 
}); 

回答

0

獨立創建更新您的視圖模型。

你沒有完全提供一個真正的攝製,但在你的情況下,將沿着這些路線走:

var ViewModel = { 
    stocks: ko.observableArray([]) 
}; 

$(function() { 
    ko.applyBindings(ViewModel, $("#stock").get(0)); 
}); 

socket.on('data', function(data) { 
    function getdata() { 
    var stock = []; 
    for (var i = 0; i < data.length; i++) { 
     stock.push(data[i]); 

    } 
    return stock; 
    } 

    var results = getdata(); 

    ViewModel.stocks(results); 
}); 

調用stocks與1個變量的函數是設置它的價值。如果要更新它,也可以將一個或多個項目推送到視圖模型屬性。有關所有可觀察數組方法的信息,請查看the docs


PS。最有可能的是,你可以簡化爲這樣的事情:

var ViewModel = { 
    stocks: ko.observableArray([]) 
}; 

$(function() { 
    ko.applyBindings(ViewModel, $("#stock").get(0)); 
}); 

socket.on('data', function(data) { 
    for (var i = 0; i < data.length; i++) { 
     ViewModel.stocks.push(data[i]); 
    } 
    } 
});