这是一个基本的帖子/评论。
当我创建新评论时,会添加一个与其相关的帖子ID匹配的post: attr()
。我想制作一个过滤器,以便在选择特定帖子并导航到评论部分时,仅加载相关评论。
这种迂回方式的原因是我在使用ember-model或ember-data +相应的firebase适配器时无法添加嵌入式注释。
我也无法保存新评论,并在创建时添加comment_ids: []
App.Post
的引用。
如果有人知道如何做以上任何一种方法也可以。
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()
});
答案 0 :(得分:1)
您最好的过滤投注是Ember.computer.filter
和Ember.computed.filterBy
http://emberjs.com/api/#method_computed_filter http://emberjs.com/api/#method_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;
})
});