将可观察数组刷新为其初始值

时间:2018-03-26 22:56:08

标签: knockout.js

我的UI中有一个observableArray,它填充了某个模态对话框。 这个observableArray还包含一个List,它将数据传递给UI中的List控件。

现在,假设用户对List控件进行了一些更改,但是决定点击“取消”'在模态窗口上重新打开它(他期待他的改变消失)

在我的情况下,数据保留其旧值。 我尝试将observableArray的初始数据保存到常规数组中,以便在'取消'上刷新observableArray。事件,但那没有用。

道歉我的模糊, 这里有几个片段。 希望它们有意义。

//让我们可以调用observable数组作为MyObservableArray // //此数组稍后将填充3个文本和一个列表框(数据来自列表)

//绑定和声明//

this.MyObservableArray = ko.observableArray();   
var unsavedMyObservable = ([]);

//这是首先在下拉列表的变更//上填充可观察数组的函数。

var getData = this.dropDown.subscribe(function (pid) {    
this.MyObservableArray(data)

//这里我尝试将来自可观察数组的数据保存到常规数组中,以便在以后取消//

时使用它
unsavedMyObservable = self.MyObservableArray();  

}

//接下来,用户在列表框上进行了一些选择,但决定点击取消,

self.cancelDialog= function () {

self.MyObservableArray(unsavedMyObservable);


};

1 个答案:

答案 0 :(得分:0)

unsavedMyObservable = self.MyObservableArray();

这不会复制数据,因为对象(包括Arrays)是引用:当您将数组赋给变量时,变量引用相同的数组内容。对MyObservableArray的更改将显示在unsavedMyObservable

查看Guard Your Model,其中介绍了protectedObservable扩展名。