【问题标题】:Refreshing an observable array to its initial value将可观察数组刷新为其初始值
【发布时间】:2018-09-05 05:07:47
【问题描述】:

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

现在,假设用户对 List 控件进行了一些更改,但决定单击模式窗口上的“取消”以重新打开它(他希望他的更改消失)

就我而言,数据保留其旧值。 我尝试将 observableArray 的初始数据保存到常规数组中,以便在 'Cancel' 事件上刷​​新 observableArray,但没有奏效。

为我的含糊道歉, 这里有一些sn-ps。 希望它们有意义。

// 让我们将 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);


};

【问题讨论】:

  • 请给一些代码,更容易得到你的想法
  • 您的问题是要求我们想象代码并同时解决问题,而代码就在您面前,只有您知道它的样子。你意识到你没有让我们帮助你变得容易吗?请展示你在说什么。您可以在问题编辑器中使用 sn-ps。 meta.stackexchange.com/questions/22186/…
  • 抱歉,我已经编辑了我最初的帖子。希望这次更有意义。感谢您抽出宝贵时间。

标签: knockout.js


【解决方案1】:
unsavedMyObservable = self.MyObservableArray();

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

看看Guard Your Model,它引入了protectedObservable 扩展。

【讨论】:

  • 谢谢罗伊!这正是我想要的。感谢帮助!
猜你喜欢
  • 1970-01-01
  • 2016-11-26
  • 2017-06-01
  • 2013-02-28
  • 2019-02-25
  • 2019-06-04
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
相关资源
最近更新 更多