我有一个ember / ember-cli应用程序,我正在努力删除一条记录。这是行动定义:
export default Ember.ObjectController.extend({
actions: {
remove: function() {
var model = this.get('model');
model.destroyRecord();
this.transitionToRoute('foo');
}
}
});
通过使用控制台日志语句,我可以看到调用此方法。
以下是调用此操作的方式:
<div class="panel-body list-group">
{{#each tournament in model}}
{{#link-to 'tournaments.play' tournament class="list-group-item"}}
<span><strong>{{tournament.name}}</strong> <em>{{tournament.eventDate}}</em></span>
<span {{action 'remove' tournament}} class="glyphicon glyphicon-trash pull-right"></span>
{{/link-to}}
{{/each}}
</div>
我尝试了{{action 'remove' tournament}}
或{{action 'remove'}}
但在任何一种情况下,控制台输出都是:
Uncaught TypeError: undefined is not a function titlematch-web/controllers/tournaments/index.js:12 __exports__.default.Ember.ObjectController.extend.actions.removevendor.js:43072 Mixin.create.sendvendor.js:33340 runRegisteredActionvendor.js:13360 Backburner.runvendor.js:31397 runvendor.js:33338 handleRegisteredActionvendor.js:51898 (anonymous function)vendor.js:4759 jQuery.event.dispatchvendor.js:4427 elemData.handle
所以似乎我的动作被调用,并且某些模型存在。我究竟做错了什么?我怎么诊断这个?我所做的似乎就像我在指南中看到的那样:http://emberjs.com/guides/models/creating-and-deleting-records/
答案 0 :(得分:3)
你忘记了动作中的参数(除非你想破坏作为列表的控制器模型,而不是单个锦标赛。)
destroyRecord
会返回一个承诺,所以这是更好的
remove: function(tournament) {
var controller = this;
tournament.destroyRecord().then(function() {
controller.transitionToRoute('foo');
}, function(error) {
// todo better error handler, show message to user...
console.error(error);
});
}