使用适用于Firebase的EmberFire适配器保存模型后,Ember模板不会更新

时间:2014-08-13 05:14:45

标签: ember.js ember-data firebase emberfire

我正在使用Firebase作为我的Ember应用程序的后端,并成功将Firebase与EmberFire连接起来。但是,当我在创建记录后尝试保存模型时,当它们发布到Firebase时,它们不会在客户端的ember模板中更新。

在我意识到这一点之前,我的动作处理程序代码是:

actions: {
    publishPost: function() {
      var newPost = this.store.createRecord('post', {
        title: this.get('post.title'),
        body: this.get('post.body'),
        timestamp: new Date()
      });

      newPost.save();

    }
 }

我的代码是通过捕获save()和find()方法返回的promise来尝试解决这个问题(但这不起作用):

actions: {
    publishPost: function() {
      var newPost = this.store.createRecord('post', {
        title: this.get('post.title'),
        body: this.get('post.body'),
        timestamp: new Date()
      });
      this.store.find('post').then(function(posts) {
        posts.addObject(newPost);
        posts.save().then(function() {
          newPost.save();
        });
      });

    }
}

我是不是没有正确处理上述代码中的逻辑来更新模板,还是有其他Firebase / EmberFire兼容解决方案吗?

1 个答案:

答案 0 :(得分:1)

https://github.com/broerse/ember-cli-blog-fire我这样做了:

import Ember from "ember";

export default Ember.ObjectController.extend({
  actions: {
    createPost: function() {
      var newPost = this.get('store').createRecord('post');
      newPost.set('date' , new Date());
      newPost.set('author' , 'C.L.I. Ember');
      this.get('target').transitionTo('post', newPost.save());
    }
 }

});

transitionTo可以处理newPost.save()的承诺。

试一试:http://exmer.com/bloggrfire/posts