2017-07-14 3 views
0

fand ich diese Frage wie meine ähnlich zu sein - Replace all elements in Knockout.js observableArrayObservableArray ersetzen?

ich eine andere Frage nur - wenn ich alle Elemente observableArray mit neuen Inhalten ersetzen, die auch in den UI reflektieren?

Hier ist das Szenario: Ich habe eine html Datei, die ein table vollen Inhalt anzeigt. Hier ist mein js Code-Schnipsel, die die Daten zwischen js und html gebunden holt -

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

In Ihrer Frage, das Array ist zu beobachten, dessen Inhalt nicht. Wenn Sie ein Element des Arrays ändern, wird Ihre Benutzeroberfläche nicht aktualisiert. Wenn Sie Elemente hinzufügen/entfernen, wird die Benutzeroberfläche aktualisiert. Hier finden Sie weitere Informationen: http://knockoutjs.com/documentation/observableArrays.html –

+1

Ja. Meine Absicht ist, alle Inhalte des Arrays zu entfernen und neue zu setzen, und sicherzustellen, dass die neuen in der Benutzeroberfläche widerspiegeln. – AlwaysALearner

Antwort

1

Ja, da seine beobachtbaren es die Benutzeroberfläche aktualisiert auch. Siehe Arbeitsbeispiel:

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 Im OP-Beispiel wird der Wert der Variablen 'table' überschrieben und die Benutzeroberfläche wird nicht aktualisiert. In Ihrer Antwort und Geige werden die Werte in die Observable injiziert und die UI * wird * aktualisiert. Dies ist eine wichtige Unterscheidung. Wenn jemand einfach das Beispiel des OPs und Ihr "Ja" liest, würden sie zu der falschen Schlussfolgerung kommen, wie dies geschehen könnte. – claytond

Verwandte Themen