2

他のレコードに「属する」レコードがたくさんあります。(異なるモデル、典型的な1-nの関係。)モデルでfindを呼び出して、関連付けに属していないすべてのモデルを見つけるにはどうすればよいですか?

何かのようなもの:

App.Thing = DS.Model.extend({
 other: DS.belongsTo( 'App.Other' ),
 someattr: DS.attr('string')
});

App.Thing.find({ other: null });

編集:

louiscoquioのソリューションは私にはうまくいきませんでした。だから私はコントローラーでフィルターできると思った。

これが私がそれをやろうとする方法です:

App.ThingsAsideController = Ember.ArrayController.extend({
  unassigned: function() {
   return this.filterProperty('other');
  }.property('content.@each')
});

これは、フィルターをかけると問題なく機能しsomeattrますが、関係をフィルターすることはできません。

質問は次のとおりです。belongsToアソシエーションのプロパティ名は何ですか?

編集、うまくいくもの:

これは機能しますが、私は非常に不満です。

 App.ThingsAsideController = Ember.ArrayController.extend({
   unassigned: function() {
     return this.filter(function(item, index, enumerable){

       var belongsToOther = false;

       var otherThings = App.OtherThing.find();
       otherThings.forEach( function( otherThing ){
         otherThing.get('things').forEach( function( otherThingThing ) {
            if( otherThingThing.id === item.id ) {
              belongsToOther = true;
            }
         });
       });

       return !belongsToOther;
    });

ember-data sourceを読んでいますが、レコードのbelongs-toアソシエーションを照会する方法がわかりません。

4

1 に答える 1

2

クラスfilterで利用可能なメソッドを使用できます。DS.Model

var filteredThings = App.Thing.filter(function(thing) {
  return thing.get('other') === null;
});

渡したコールバックApp.Thingで返されたすべてを含む配列を返します。true

ドキュメントが言うように:

新しいレコードがストアにロードされるか、ローカルで作成されると、最新の状態を維持するライブ RecordArray が返されます。

于 2013-02-14T21:58:20.560 に答える