EmberError:没有处理动作

时间:2017-01-08 05:03:29

标签: ember.js firebase ember-data ember-cli emberfire

我一直在努力让我的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。

1 个答案:

答案 0 :(得分:0)

感谢@Lux征求意见。 我的代码有几个问题。 我创建了modelcontroller名为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' : ''
            });

        }
    }   
});

如您所见,我删除了设置boughtcreatedAt默认值的行。仅仅将它们设置在模型本身就足够了。