Ember.js 如何仅获取模型本身的自定义属性?
我有一个自定义模型attr(类似于带有余烬数据的船舶) 我用它注释我的模型属性,就像这样Ember.js 如何仅获取模型本身的自定义属性?,ember.js,Ember.js,我有一个自定义模型attr(类似于带有余烬数据的船舶) 我用它注释我的模型属性,就像这样 var Foo = Ember.Object.extend({ firstName: attr() }); 我在寻找一种方法,当我在这个实例上循环“键”时,可以“仅”获得这些属性(例如,在我的回滚方法中,我希望重置其中的每一个键,但不应重置其他键) 有没有可能以某种方式使这个属性变得特殊,这样我就可以只循环模型上的那些属性?为什么不创建这些“特殊”属性的散列并迭代它呢?我想出了解决您问题的方法。在
var Foo = Ember.Object.extend({
firstName: attr()
});
我在寻找一种方法,当我在这个实例上循环“键”时,可以“仅”获得这些属性(例如,在我的回滚方法中,我希望重置其中的每一个键,但不应重置其他键)
有没有可能以某种方式使这个属性变得特殊,这样我就可以只循环模型上的那些属性?为什么不创建这些“特殊”属性的散列并迭代它呢?我想出了解决您问题的方法。在
attr()
方法内部,将meta
添加到计算属性。似乎它是为这样的情况设计的:
在某些情况下,您可能希望使用附加元数据对计算属性进行注释,说明它们如何工作或对哪些值进行操作。
()
因此,attr()
方法:
var attr = function() {
var value = '';
return function(key, val) {
if (arguments.length === 2) {
value = val;
}
return value;
}.property().meta({ isCustomAttr: true });
};
对象定义:
var Foo = Ember.Object.extend({
firstName: attr(),
rollback: function() {
Foo.eachComputedProperty(function (item) {
if(Foo.metaForProperty(item).isCustomAttr) {
console.log('This property was defined using custom attr() method and its key is: ' + item);
}
});
}
});
产出:
“此属性是使用自定义attr()方法定义的,其键为:firstName”
我相信这是真正的余烬之路。这是一个想法——只是在寻找一种更为免提/自动化的东西。我计划提取一个简单的isDirty/rollback基类(类似于DS.Model)long(er)term这是一个问题、注释还是一个答案?很好!我在余烬数据中查看了类似的内容,你搞定了!
var attr = function() {
var value = '';
return function(key, val) {
if (arguments.length === 2) {
value = val;
}
return value;
}.property().meta({ isCustomAttr: true });
};
var Foo = Ember.Object.extend({
firstName: attr(),
rollback: function() {
Foo.eachComputedProperty(function (item) {
if(Foo.metaForProperty(item).isCustomAttr) {
console.log('This property was defined using custom attr() method and its key is: ' + item);
}
});
}
});