2017-03-27 18 views
2

我使用燼數據很長一段時間,但我從未有過檢查模型中是否存在鍵的情況。一般情況下,我檢查,如果有一個現值模型中的一個關鍵的如何檢查燼模型是否有鍵

if(model.get('keyname')) { 
    console.log('value present') 
} 

但現在我要檢查是否有鍵在模型對象。任何幫助,將不勝感激。

忘了提到這裏 - 這裏模型是嵌入式記錄,我沒有在我的項目中的嵌入式記錄模型文件(我自動生成嵌入式記錄模型)。所以,我無法使用屬性或字段。

+0

hasKey = Ember.get(DSobject, '屬性')包括(註冊表項目) –

+0

你所說的'自動生成models'意思呢?。那這個普通的javascript對象呢? – kumkanillam

+0

沒有它不是一個普通的JavaScript對象,它是一個擴展DS.Model的類,但我沒有模型文件在模型文件夾中。自動生成模型都是一個單獨的概念,下面是代碼的行(如果你想知道的話)。 (modelAttributes));我們可以通過下面的例子來說明如何使用這個模型:model.txt('model:testModel',DS.Model.extend(modelAttributes)); –

回答

3

您可以使用attributesfields

應用程序/模型/ person.js

import Model from "ember-data/model"; 
    import attr from "ember-data/attr"; 
    import { belongsTo, hasMany } from "ember-data/relationships"; 
    export default Model.extend({ 
     firstName: attr('string'), 
     relations: hasMany('person'), 
    }); 

屬性

的地圖的鍵是模型的屬性(由DS.attr描述的屬性),其值是該屬性的元對象。

import Ember from 'ember'; 
    import Person from 'app/models/person'; 
    let attributes = Ember.get(Person, 'attributes') 
    attributes.forEach(function(meta, name) { 
     console.log(name, meta); 
    }); 

輸出:

firstName {type: "string", isAttribute: true, options: Object, parentType: function, name: "firstName"} 

字段

的地圖的鍵是模型的,其值是描述種類的字段的串的字段和。模型的字段是所有屬性和關係的聯合。

import Ember from 'ember'; 
    import Person from 'app/models/person'; 
    let attributes = Ember.get(Person, 'fields') 
    attributes.forEach(function(meta, name) { 
     console.log(name, meta); 
    }); 

輸出:

lastName attribute 
users hasMany 
+0

啊哈我剛剛閱讀我的答案,想到闡述,但更新後的答案我看到OP編輯問題...需要找到一種方法 – kumkanillam