Javascript 换耳环?
我发现这个问题与我的问题相似- 我还有一个问题-如果我用新内容替换Javascript 换耳环?,javascript,html,knockout.js,data-binding,Javascript,Html,Knockout.js,Data Binding,我发现这个问题与我的问题相似- 我还有一个问题-如果我用新内容替换observableArray的所有元素,这是否也会反映在UI中 这是一个场景:我有一个html文件,其中显示了一个表格的全部内容。这是我的js代码片段,它获取js和html- 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,
observableArray
的所有元素,这是否也会反映在UI
中
这是一个场景:我有一个html
文件,其中显示了一个表格
的全部内容。这是我的js
代码片段,它获取js
和html
-
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}?**
是的,因为它是可观察的,所以它也会更新UI。 见工作示例:
在你的问题中,数组是可观察的,它的内容不是。如果更改数组的元素,则不会更新UI。如果添加/删除元素,则会更新UI。这里有更多的信息:是的。我的目的是删除数组的所有内容并放置新内容,并确保新内容反映在UI中。-1在OP的示例中,var
表的值被覆盖,并且不会更新UI。在你的回答和摆弄中,这些值被注入到可观察对象中,用户界面也被更新。这是一个重要的区别。如果有人只是简单地读了OP的例子和你的“是”,他们就会得出错误的结论。
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);
}
}