我一直在努力让我的Ember应用程序与Firebase一起工作。 我在Stackoverflow上查看了关于类似问题的所有帖子,但我找不到问题的答案。所以这就是:
每当我尝试将数据放入输入字段并使用按钮提交时,我都会收到控制台错误:
EmberError
code : undefined
description : undefined
fileName : undefined
lineNumber : undefined
message :
"Nothing handled the action 'createBook'. If you did handle the action, this error can be caused by returning true from an action handler in a controller, causing the action to bubble."
我的模特:
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr('string'),
author: DS.attr('string'),
picture: DS.attr('string'),
buyer: DS.attr('string'),
bought: DS.attr('boolean', { defaultValue: false }),
createdAt: DS.attr('date', { defaultValue() { return new Date(); } })
});
我的控制器:
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
createBook: function(){
var newBook = this.store.createRecord('book', {
title: this.get('title'),
author: this.get('author'),
picture: this.get('picture'),
buyer: this.get('buyer'),
bought: this.set(false),
createdAt: new Date().getTime()
});
newBook.save();
//reset values after create
this.setProperties({'title' : '',
'author' : '',
'picture' : '',
'buyer' : ''
});
}
}
});
模板:
{{outlet}}
<div style ="margin-left:130px;">
<h1> blabla </h1>
{{input type="text" value=title placeholder="Add Title"}}<br>
{{input type="text" value=author placeholder="Add author"}}<br>
{{input type="text" value=picture placeholder="Add picture"}}<br>
{{input type="text" value=buyer placeholder="buyer"}}<br>
</div>
<button class="btn btn-default" {{action "createBook" }}> Create</button>
{{#each model as |book|}}
<ul>
<li>{{book.title}}</li>
</ul>
{{/each}}
Firebase和Ember之间的连接正确设置为100%。
目前,对于读取和写入,firebase的规则已设置为true
。
唯一的问题是它不会将数据发布到Firebase。
答案 0 :(得分:0)
感谢@Lux征求意见。
我的代码有几个问题。
我创建了model
和controller
名为book,但route
名为books
。
我不知道它会对我的model and controller.
所以我最终得到了:
app/controllers/book.js
app/model/book.js
app/routes/book.js
app/templates/book.hbs
这还不够。我还必须编辑controller
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
createBook: function(){
var newBook = this.store.createRecord('book', {
title: this.get('title'),
author: this.get('author'),
picture: this.get('picture'),
buyer: this.get('buyer')
});
newBook.save();
//reset values after create
this.setProperties({'title' : '',
'author' : '',
'picture' : '',
'buyer' : ''
});
}
}
});
如您所见,我删除了设置bought
和createdAt
默认值的行。仅仅将它们设置在模型本身就足够了。