Ember.js动态模型属性

时间:2013-07-11 13:06:32

标签: ember.js ember-data

Ember.js(和Ember Data)允许我指定模型的属性,例如idlabeldescription。但是我允许我的用户将他们自己的属性添加到任何模型中,这显然是我不可能知道的。有什么办法可以在运行时动态地向模型添加属性吗? (更重要的是,Ember.js会识别这些属性的变化并保存它们吗?)

1 个答案:

答案 0 :(得分:13)

Ember通过Ember.defineProperty定义对象属性。签名是Ember.defineProperty(object, propertyName, function)。例如,要定义lorem支持的_lorem属性,可以使用

Ember.defineProperty(this, 'lorem', 
  Ember.computed(function (key, value) {
    if (value) {
      this.set('_lorem', value);
      return value;
    } else {
      return this.get('_lorem');
    }
  }  
));

propertyName是动态的时,您可以在用户输入处理程序中调用此方法。 这类事物最适合扩展Meta对象系统。建议小心,特别是用户输入!