2016-12-28 24 views
0

MongodbからSocketでデータを取得してクライアントに送信します。 knockoutをバインディングに使用していますが、エラーでバインディングを複数回適用することはできません。修正コードsocket ioとknockout

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

セパレートビューモデルを更新とを作成: は、あなたは私のコード

コードを修正するのに役立つことができます。

あなたはかなり本物のREPROを提供していないが、あなたのコンテキストでは、これらの線に沿って行くだろう:1つの引数を持つ関数がその値を設定されるよう

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]); 
    } 
    } 
}); 
関連する問題