Ember.js 按父id筛选子项数组
这是一篇基本的帖子/评论 当我创建新评论时,它们会添加一个与它们相关的帖子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 () {
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;
})
});