处理可以在KnockoutJS中提交/抛弃的可观察数组的最佳方法是什么?
我之前已经使用ProtectedObservable想法实现了这一点,但这是在一个数据记录上,而不是在数组上。
只是想知道如何最好地前进。我的项目需要所有电子邮件地址联系人的对话框和所选的列表。当它们从左侧的列表中添加时,它们将被删除并添加到右侧的列表中。
当按下“确定”按钮时,它们会被添加到“收件人:”字段中,但是当按下“取消”时,列表将恢复到之前的状态(之前可能已经填充过)。
答案 0 :(得分:11)
这样的事情:http://jsfiddle.net/rniemeyer/PAzVk/
这使用支持“snapShots”的observableArray。您可以保存基础数组的副本,并在需要时将其还原。
ko.snapShotObservableArray = function(initialData) {
var _snapShot = initialData;
var result = ko.observableArray(initialData || []);
result.takeSnapShot = function() {
_snapShot = this().slice(); //take a copy of the underlying array
};
result.restoreSnapShot = function() {
this(_snapShot.slice());
}
return result;
}
在示例中,您将在“To”行上的可用用户数组,所选用户数组和用户数组中使用此数组。然后,取消按钮将每个阵列恢复到您拍摄最后一个快照的位置。