Ember.js 按父id筛选子项数组

Ember.js 按父id筛选子项数组,ember.js,ember-data,ember-model,Ember.js,Ember Data,Ember Model,这是一篇基本的帖子/评论 当我创建新评论时,它们会添加一个与它们相关的帖子id相匹配的post:attr()。我想做一个过滤器,这样当选择一个特定的帖子并导航到评论部分时,只加载相关的评论 之所以采用这种迂回的方式,是因为在使用余烬模型或余烬数据+相应的firebase适配器时,我无法添加嵌入式注释 我也无法保存新的注释,并在创建时将其添加到App.Post的comment\u id:[]中 如果有人对如何做上述任何一项有想法,那也行 App.Router.map(function () {

这是一篇基本的帖子/评论

当我创建新评论时,它们会添加一个与它们相关的帖子id相匹配的
post:attr()
。我想做一个过滤器,这样当选择一个特定的帖子并导航到评论部分时,只加载相关的评论

之所以采用这种迂回的方式,是因为在使用余烬模型或余烬数据+相应的firebase适配器时,我无法添加嵌入式注释

我也无法保存新的注释,并在创建时将其添加到
App.Post的
comment\u id:[]

如果有人对如何做上述任何一项有想法,那也行

App.Router.map(function () {
  this.resource("posts", {
    path: "/posts"
  });
  this.resource("post", {
    path: "/:post_id"
  }, function () {
    this.resource("comments", {
      path: "/comments"
    });
  });
});

App.Post = Ember.Model.extend({
  name: attr(),
  comments: Ember.hasMany("App.Comment", {
    key: 'comments'
  })
});

App.Post.url = "/posts";

App.Comment = Ember.Model.extend({
  message: attr(),
  post: attr()
});

筛选的最佳选择是
Ember.computer.filter
Ember.computed.filterBy

filterBy
是最简单的,但仅对简单的单属性/值过滤器有用

App.Hampster = Ember.Object.extend({
  remainingChores: Ember.computed.filterBy('chores', 'done', false)
});

var hampster = App.Hampster.create({chores: [
  {name: 'cook', done: true},
  {name: 'clean', done: true},
  {name: 'write more unit tests', done: false}
]});
hampster.get('remainingChores'); // [{name: 'write more unit tests', done: false}]
filter
允许您传递函数以进行更复杂的筛选

App.Hampster = Ember.Object.extend({
  remainingChores: Ember.computed.filter('chores', function(chore) {
    return !chore.done;
  })
});