2017-07-14 19 views
0

私はこの質問は私のと同様であることが判明 - Replace all elements in Knockout.js observableArrayobservableArrayを置き換えますか?

私は別の質問を持っている - 私は新しい内容にobservableArrayのすべての要素を交換する場合、同様UIに反映されますか?

は、ここでのシナリオです:私は内容の完全なtableを表示htmlファイルを持っています。それはまた、UIを更新するその観測可能なので、

var table = ko.observableArray(); // {1,2,3,4,5} - UI shows 1,2,3,4,5 in the table 
// now I replace all the contents 
table = {6,3,8,9}; 
// **will the UI display the updated content, which is {6,7,8,9} in the table? Or will it still display {1,2,3,4,5}?** 
+2

を、配列は、その内容に観察ではありません。配列の要素を変更すると、UIが更新されません。要素を追加/削除すると、UIが更新されます。詳しい情報は次のとおりです。http://knockoutjs.com/documentation/observableArrays.html –

+1

はい。私の意図は、配列のすべての内容を削除して新しいものを入れ、新しいものがUIに反映されていることを確認することです。 – AlwaysALearner

答えて

1

はい - ここjshtmlの間でバインドされたデータを取得し、私のjsコードスニペットです。 実施例を参照してください:あなたの質問に

https://jsfiddle.net/fkxgk7rc/4/

var data = [1,2,3,4,5]; 
function viewModel() { 
    var self = this; 
    self.myList = ko.observableArray(data); 

    self.addToList = function (listData) { 
    for (var i = listData.length; i-- > 0;) 
     self.myList.push(listData[i]); 
    } 

    self.replaceList = function (listData) { 
     self.myList(listData); 
    } 
} 
+0

-1 OPの例では、var 'table'の値が上書きされ、UIは更新されません。あなたの答えとフィドルでは、値が観察可能なものに注入され、UI *が更新されます。これは重要な違いです。誰かが単にOPの例とあなたの「はい」を読んだだけでは、これがどうやって行われるかについての間違った結論になるでしょう。 – claytond

関連する問題