【问题标题】:Does knockoutJS support protected observable array?knockoutJS 是否支持受保护的可观察数组?
【发布时间】:2011-11-23 20:32:13
【问题描述】:

处理可在 KnockoutJS 中提交/丢弃的可观察数组的最佳方法是什么?

我之前通过 ProtectedObservable 的想法实现了这一点,但这是在单个数据记录上,而不是在数组上。

只是想知道如何最好地前进。我的项目需要一个包含所有电子邮件地址联系人的对话框和一个所选联系人的列表。当它们从左侧的列表中添加时,它们会被移除并添加到右侧的列表中。

当按下“确定”按钮时,它们会被添加到“收件人:”字段中,但当按下“取消”时,列表会恢复到之前的状态(之前可能已经填充过)。

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    这样的事情怎么样: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;
    }
    

    在示例中,您将在可用用户数组、选定用户数组和“收件人”行上的用户数组上使用它。然后,取消按钮将每个数组恢复到您拍摄最后一个快照的位置。

    【讨论】:

    • 一如既往的出色解决方案。谢谢瑞恩。
    猜你喜欢
    • 2012-04-20
    • 2017-11-25
    • 2014-03-21
    • 1970-01-01
    • 2015-09-18
    • 2015-11-30
    • 2018-08-04
    • 2013-12-16
    • 2013-05-23
    相关资源
    最近更新 更多