更新:这已经过时了,我的博客不再是基于Ember的了。基本上,我的问题很简单。我添加了createRecord()
的记录。我可以看到didCreate
事件被触发,但我不知道如何使ember加载并显示我刚创建的内容。这个案例是关于在帖子中添加评论 - 这就是我想要立即看到的内容。
更新:我没有jsfiddle,但我可以炫耀我正在谈论的实时应用/网站是我自己的博客,在这里:http://eduardmoldovan.com/
模板位于页面底部,javascript位于:http://eduardmoldovan.com/static/eduardmoldovan.com/javascripts/ngin.js
答案 0 :(得分:1)
假设您已使用commit()来保存注释,这样的事情应该有效:
{{#each comment in post.comments}}
{{comment.text}}
{{/each}}
答案 1 :(得分:1)
<击>
您可以手动将新记录添加到didCreate
挂钩的记录数组中:
var newRecord = transaction.createRecord(Ngin.Comment, {
articleUrl: articleUrl,
name: name,
url: url,
email: email,
body: body,
secret: secret
});
newRecord.one('didCreate', this, function () {
this.get('comments').pushObject(newRecord);
});
transaction.commit();
或者,如果要从服务器重新加载,请使用reload
方法:
controller.get("comments").reload();
击> <击> 撞击>
检查源代码后,我在课程update
中找到了RecordArray
方法。这似乎是正确的。
答案 2 :(得分:0)
以下既不是有效的也不是最好的方法,但它会通知视图。并将尝试找到更好的方法。我确定有一个更新方法和一个通知视图的方法。无法立即找到它。
模板
<script type="text/x-handlebars" id="posts">
<button {{action 'newObject'}} ></button>
控制器
App.PostsController = Ember.ArrayController.extend
actions: {
newObject: function() {
this.store.createRecord('post', {id: xxxx, title: 'Default title'});
var all = this.store.filter('post', function(post) {
return post; // return each object
}); //This filter will include the new post record
this.set('model', all); // set will notify the view of a mutated array
}
},