2016-11-23 8 views
0

ストアからレコードを作成してコンストラクタを見ないでモデルクラスにアクセスする方法はありますか?Emberjsモデルを作成せずにクラス/コンストラクタの属性にアクセスする方法

私が持っている:

const feedback = this.store 
        .createRecord('feedback') 
        .get('constructor'); 
const attrs = Ember.get(feedback, 'attributes') 
         ._keys 
         .list; 
// attr = ["attr_1", "attr_2", ...] 

は、記録を作成せずに同じ結果を見つけるための適切な方法はありますか?

答えて

0

最後にそれを行うための良い方法は、ファイルをインポートすることです私のコントローラ/ component.jsに

import Feedback form 'myApp/models/feedback' 

... 

const attrs = Ember.get(Feedback, 'attributes') 
        ._keys 
        .list; 

// attr = ["attr_1", "attr_2", ...] 
// Do not forget to use Ember.get and not to .get() on Feedback 
0

私はこれを行うための唯一の正しい方法はmodelFor function on the storeであると思います。

また、._keys.list;は完全にプライベートAPIであることに気付いていますか?これは特定のMapポリフィルでのみ機能します。このための簡単な公開APIがあります。スプレッドオペレータと組み合わせて.keys()を使用してください。

const attrs = [...store.modelFor('feedback').get('attributes').keys()]` 
+0

はい、良いアプローチ。ありがとうございました。 しかし、それは動作しません。 'Ember.get()'を使用する必要があります。 'modelFor()'の結果に直接 '.get()'を使用すると機能しません。(実際には関数を返します) –

+0

.keys結果のスプレッド演算子との組み合わせはどちらも機能しません。 –

関連する問題