2015-02-11 99 views
0

使用模型的特定實例,是否有任何方法來獲取任何給定屬性的類型?例如,假設我有一個名爲Person的模型。在模板中,我將此模型的實例和屬性名稱傳遞給輔助函數。在那個函數中,我希望能夠找出是什麼類型的屬性。獲取任何屬性在屬性數據模型中的屬性類型

我見過的最接近的事情是這樣的,直接從灰燼文檔:

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

灰燼2.4 +,使用​​3210:

var attributeType 

person.eachAttribute(function(name, meta){ 
    if (name === property){ 
     attributeType = meta.type 
    } 
}) 
0

您可以通過使用JQuery類型()函數

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

+0

這將工作,除了,例如日期,其存儲爲日期時間字符串。 – 2015-02-12 15:43:29