我正在使用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>
所有其他工作正常。我可以显示我的用户列表和不可侵犯的用户。
谢谢!
答案 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);
}
});
抱歉打扰,谢谢:)