1

更新:这已经过时了,我的博客不再基于 Ember。基本上,我的问题很简单。我添加了一条记录createRecord()。我可以看到didCreate事件被触发,但我不知道如何让 ember 加载并显示我刚刚创建的内容。这个案例是关于在帖子中添加评论——这就是我想立即看到的。

更新:我没有 jsfiddle,但我可以炫耀我正在谈论的实时应用程序/网站是我自己的博客,这里:http ://eduardmoldovan.com/

模板在页面底部,javascript在这里:http ://eduardmoldovan.com/static/eduardmoldovan.com/javascripts/ngin.js

4

3 回答 3

1

假设您已使用 commit() 保存评论,这样的事情应该可以工作:

{{#each comment in post.comments}}
  {{comment.text}}
{{/each}}
于 2013-02-18T20:51:36.103 回答
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在 class 中找到了一个方法RecordArray。这似乎是正确的。

于 2013-02-20T08:39:34.763 回答
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
    }
  },
于 2015-01-20T20:36:49.093 回答