2013-02-14 61 views
2

我有一堆记录“belongsTo”的其他记录。 (不同的模型,只是典型的1-n关系。)我如何在我的模型上调用find来查找所有没有归属关联的那些?Ember.js:如何查找没有属性集的记录?

喜欢的东西:

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('[email protected]') 
}); 

,如果我筛选someattr,但我不能筛选的关系,工作得很好。

我想问题是:什么是属于属性关联的属性名称?

编辑,一些作品:

这工作,但我很不高兴吧:

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

我一直在读烬的数据源,但我无法找到了解如何查询记录的归属关联。

回答

2

您可以使用现有的filter方法DS.Model类:

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

它返回一个包含所有App.Thing这在您通过回调返回true数组。

由于文件说:

它返回现场RecordArray作为新的记录被加载到商店或创建 本地是保持最新。

+0

是不是应该像return thing.other === null;在这种情况下? – scrrr 2013-02-14 22:15:18

+0

哦对了,对不起,我已经更新了我的答案! – louiscoquio 2013-02-15 08:51:56

相关问题