我的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);
};
答案 0 :(得分:0)
unsavedMyObservable = self.MyObservableArray();
这不会复制数据,因为对象(包括Arrays)是引用:当您将数组赋给变量时,变量引用相同的数组内容。对MyObservableArray
的更改将显示在unsavedMyObservable
。
查看Guard Your Model,其中介绍了protectedObservable
扩展名。