根据Ember.js中每个hasMany中对象的存在过滤集合

时间:2014-04-23 22:35:34

标签: ember.js

我正在尝试根据每个项目Ember.Enumerable关联中是否存在对象来过滤hasMany的实例。

App.Project = DS.Model.extend
  users: DS.hasMany 'user', async: true

App.User = DS.Model.extend()

如何根据每个项目users数组中是否存在单个用户对象来过滤项目集合?

user = @store.find('user', 1)
@store.find('project').filter (project) ->
  project.get('users').then (users) ->
    users.contains(user)

由于users模型上的async: true属性为Project,因此调用project.get('users')会返回一个承诺,而承诺又会从filter()调用返回。相反,我想返回users数组是否包含user对象。

这可能是一个简单的问题。我仍然用javascript承诺弄脏了。

1 个答案:

答案 0 :(得分:0)

我认为你的问题在这里:

  project.get('users').then (users) ->

then的第一个参数是您在成功时使用的回调,而不是结果回复。所以你应该这样做:

user = @store.find('user', 1)
@store.find('project').filter(project) ->
    users = project.get('users').then() ->
    users.contains(user)

如果我的语法不正确,请道歉。我对Coffeescript不太熟悉。