Setting attributes on a collection - backbone js

前端 未结 4 1254
忘了有多久
忘了有多久 2020-12-02 13:17

Collections in backbone js don\'t allow you to set attributes, but I often find that there is need to store some meta-information about a collection. Where is

4条回答
  •  再見小時候
    2020-12-02 13:29

    Just .extend the collection with a meta data storage function.

    var MyCollection = Backbone.Collection.extend({
        initialize: function() {
            ...
    
            this._meta = {};
        },
        model: ...
        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("someProperty", value);
    
    ...
    
    var value = collection.meta("someProperty");
    

    There may be better places for storing specific meta data but this depends completely on what the meta data is.

    For storing generic meta data extending your collection constructor with a method to do deal with that should work.

    Be wary that if this meta data needs to be stored and loaded from the server then you've got a bigger task at hand.

提交回复
热议问题