骨干模型上的defineProperty

hom

如果我想向我的骨干模型添加自定义属性,这是最好的方法吗?对于我想要实现的功能,是否有更好的方法或完全不同的方法?

var myModel = Backbone.Model.extend({

   defaults:{
    monthly_amount: 100
   },

   initialize: function(model, options){

     var m = this;

     Object.defineProperty(this,"yearly_amount",{
       get: function() {
                         return (m.get("monthly_amount") * 12);
                       },
       set: function(value) {
                         m.set("monthly_amount", (value/12) );
                       }
     });

   }
});

谢谢!

编辑:该属性只是“虚拟”,我不希望将模型保存到服务器时位于模型属性内。

彼得·里昂

因此,这里的一般问题通常称为“计算属性”,并且有一些骨干插件提供此功能(请参见下文)。Backbone使用get/set方法调用样式而不是defineProperty样式,因此您的方法将使值计算对视图不透明,因此与主干的设计存在很大差异。维持适当的一个插件get/setchange接口将会保持基本模型API,因此认为没有区别对待这个特殊的模型属性。

另请参见主干插件Wiki

可用的插件:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章