1

我正在尝试覆盖 get:Alloy 模型中的调用,与 Backbone 非常相似,我写了这个但不起作用

extendModel: function(Model) {      
        _.extend(Model.prototype, {
            // extended functions and properties go here
            get: function (attr) {
                if (attr=='image')
                {
                    return Ti.Utils.base64decode(this['image'])
                }

                    return this[attr];
              }
        });

        return Model;
    },
4

1 回答 1

2

以下是我如何覆盖 set 和 add 方法,希望对您有所帮助:

exports.definition = {
    config: {

        adapter: {
            type: "properties",
            collection_name: "careCenter",
            idAttribute : "CareCenterID"
        }
    },      
    extendModel: function(Model) {      
        _.extend(Model.prototype, {
            idAttribute : "CareCenterID"
            // extended functions and properties go here
        });

        return Model;
    },
    extendCollection: function(Collection) {        
        _.extend(Collection.prototype, {
            add : function(attrs, opts){
                var isDuplicated = false;
                if(attrs && attrs.get){
                    isDuplicated = this.any(function(model){
                        return model.get("CareCenterID") === attrs.get("CareCenterID");
                    });
                }
                if(isDuplicated){
                    return false;
                } else {
                    Backbone.Collection.prototype.add.call(this, attrs, opts);
                }
            },
            comparator : function(model){
                return -model.get("state");
            }
        });

        return Collection;
    }
}


extendModel: function(Model) {      
        _.extend(Model.prototype, {
            idAttribute : "RecipientID",
            set : function(attrs, opts){
                if(attrs.Age != null){
                    var age = attrs.Age;
                    var result = "";
                    if(age <= Alloy.CFG.INFANT){
                        result = "infant";
                    } else if(age <= Alloy.CFG.CHILD){
                        result = "child";
                    } else if(age <= Alloy.CFG.TEENAGER){
                        result = "teenager";
                    } else {
                        result = "adult";
                    }
                    attrs.Group = result;
                }

                return Backbone.Model.prototype.set.call(this, attrs, opts);
            }
        });

        return Model;
    },
于 2013-07-31T16:07:55.687 回答