2017-03-27 9 views
2

私は長い時間エバーデータを使用していますが、モデルにキーがあるかどうかを確認する状況はありませんでした。エバーモデルにキーがあるかどうかを確認する方法

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

としてモデルにおけるキーの値が存在だ場合、一般的に、私はチェックしかし、今私は、モデル・オブジェクトのキー存在があるのか​​どうかを確認します。どんな助けもありがとう。

ここではモデルが埋め込みレコードであり、埋め込みレコード用のプロジェクトにモデルファイルがありません(埋め込みレコードのモデルを自動生成しています)。だから、私は属性やフィールドを使用することができません。

あなたが

、キー(モデルの属性であるマップを属性

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'), 
    }); 

attributesまたはfields

セイアプリ/モデル/ person.jsを使用することができますいずれか

+0

hasKey = Ember.get(DSobject、 '属性')(キー名)が含ま –

+0

あなたは自動生成models' 'とはどういう意味ですか。?。それは普通のjavascriptオブジェクトですか? – kumkanillam

+0

いいえ、それはプレーンなjavascriptオブジェクトではなく、DS.Modelを拡張するクラスですが、modelsフォルダにはモデルファイルがありません。自動的にモデルを生成することは、すべて別の概念でまとめられています。以下では、それを行うコードの行を示します(知りたい場合)。 modelAttributes = { "名前":DS.attr( '列')、 .....} application.register( 'モデル:testModel'、DS.Model.extend(modelAttributes))。 –

答えて

3

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

関連する問題