我正在使用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兼容解决方案吗?
答案 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()的承诺。