合金模型中的覆盖get方法

时间:2013-07-31 08:21:21

标签: backbone.js titanium titanium-alloy

我试图在Alloy模型中覆盖get:调用,非常类似于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;
    },

1 个答案:

答案 0 :(得分:2)

以下是我如何覆盖集合并添加方法希望它可以帮助您:

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;
    },