未捕获错误:没有处理动作'编辑'

时间:2013-12-25 23:58:16

标签: javascript ember.js single-page-application

我正在使用SmashingMagazine(http://coding.smashingmagazine.com/2013/11/07/an-in-depth-introduction-to-ember-js/)进行本教程,当我尝试使用调用自定义操作的按钮时,我仍然遇到此错误:

  

未捕获错误:没有处理动作'编辑'。如果您确实处理了该操作,则可以通过从控制器中的操作处理程序返回true来导致此错误,从而导致该错误   泡沫的行动。


user.js控制器:

App.UserController = Ember.ObjectController.extend({
    actions: {
        edit: function(){
            this.transitionToRoute('user.edit');
        }
    }
});

user.hbs查看:

<div class="user-profile">
    <button {{action "edit"}}>Edit</button>
    <!--<img {{bind-attr src="avatarUrl"}} alt="User's avatar" />-->
    <h2>{{name}}</h2>
    <span>{{email}}</span>
    <p>{{bio}}</p>
    <span>Created {{creationDate}}</span>
</div>

{{outlet}}

user\edit.hbs查看:

<div class="user-edit">
  <label>Choose user avatar</label>
  {{input value=avatarUrl}}

  <label>User name</label>
  {{input value=name}}

  <label>User email</label>
  {{input value=email}}

  <label>User short bio</label>
  {{textarea value=bio}}
</div>

所有其他工作正常。我可以显示我的用户列表和不可侵犯的用户。

谢谢!

2 个答案:

答案 0 :(得分:2)

我有同样的错误,但原因不同。有些演示视频使用以下代码。

App.FileController = Ember.ObjectController.extend({
    isEditing: false,
    edit: function () {
        this.set('isEditing', true);
    },
    done: function () {
        this.set('isEditing', false);
    }
});

如果您查看EmberJs website中的此链接,您会发现需要将方法包装在actions属性中才能使用。

App.FileController = Ember.ObjectController.extend({
    isEditing: false,
    actions: {                            //<------
        edit: function() {
            this.set('isEditing', true);
        },
        done: function() {
            this.set('isEditing', false);
        }                                 //<------
    }
});

我希望我能节省你一些时间。

答案 1 :(得分:1)

我发现了我的错误。我不小心覆盖了我的user.js路由文件。用以下内容替换内容:

App.UserRoute = Ember.Route.extend({
    model: function(params) { 
        return this.store.find('user', params.user_id);
    }
});

抱歉打扰,谢谢:)