使用模型的特定实例,有没有办法获取任何给定属性的类型?例如,假设我有一个名为Person的模型。在模板内部,我将此模型的实例和属性名称传递给辅助函数。在该函数中,我希望能够找出属于哪种类型的属性。
我最接近的是这一点,直接来自Ember docs:
App.Person = DS.Model.extend({
firstName: attr('string'),
lastName: attr('string'),
birthday: attr('date')
});
var attributes = Ember.get(App.Person, 'attributes')
attributes.forEach(function(name, meta) {
console.log(name, meta);
});
// prints:
// firstName {type: "string", isAttribute: true, options: Object, parentType: function, name: "firstName"}
// lastName {type: "string", isAttribute: true, options: Object, parentType: function, name: "lastName"}
// birthday {type: "date", isAttribute: true, options: Object, parentType: function, name: "birthday"}
这个会工作,期望在我的帮助方法中,我不知道模型类型。我需要能够做这样的事情并让它返回相同的信息:
Ember.get(person, 'attributes');
当然,我想做更像这样的事情:
person.getMetaInfoFor(property);
但在这一点上,这只是一厢情愿的想法。我只想弄清楚某个未知模型的某些未知属性是字符串还是日期。任何帮助将不胜感激。
答案 0 :(得分:0)
您可以使用JQuery type()函数
获取属性的类型function getMetaInfoFor(input){
if(jQuery.type( input) === "boolean"){
return boolean;
}
if(jQuery.type( input) === "number"{
return number;
}
if(jQuery.type(input) === "date"){
return date;
}
};
您需要编写一个函数,根据您的要求以自定义格式转换输入日期。
您可以按照此link
继续添加所有类型答案 1 :(得分:0)
Ember 2.4+,使用eachAttribute:
var attributeType
person.eachAttribute(function(name, meta){
if (name === property){
attributeType = meta.type
}
})