【问题标题】:Making a model attribute "unique" among collection models在集合模型中使模型属性“唯一”
【发布时间】:2014-11-10 15:01:01
【问题描述】:

我有一组 Backbone 模型,每个模型都有几个属性:_id、代码、标题、日期和 selected

我希望“selected”属性值一次只在一个集合模型中为 true。当我将模型设置为“选定”时,集合中的所有其他模型都应设置为{selected:false}

我正在考虑两种不同的解决方案:

1) 从模型“内部”:我可以监听 selected 属性的变化,循环所有父集合项,并设置 selected:false if _id != id of this

2)从“外部”,循环遍历集合模型,将所有设置为selected:false,除了匹配id的那个我想被选中:true。

有更好的做法吗? 谢谢

【问题讨论】:

    标签: javascript backbone.js backbone.js-collections


    【解决方案1】:

    这是另一个解决方案 3)

    例如,如何在集合中存储额外的数据。取自here

    var MyCollection = Backbone.Collection.extend({
        meta: function(prop, value) {
            if (value === undefined) {
                return this._meta[prop]
            } else {
                this._meta[prop] = value;
            }
        },
    });
    
    var collection = new MyCollection();
    collection.add(someModels);
    collection.meta("selectedId", value);
    

    您可以将 selectedId 存储在集合元属性中。对于每个系列,它将始终是独一无二的。 并且模型中的'selected'属性不需要。

    【讨论】:

    • 你没有理解这个问题。每个模型都必须具有选定的属性。我只是想避免其中不止一个人同时拥有它!
    • 那么应该使用你的 2 个解决方案。没有你的注意属性可以改变它们自己
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 2015-08-04
    • 2017-09-12
    • 1970-01-01
    相关资源
    最近更新 更多