2014-12-19 39 views
1

我有一個ember/ember-cli應用程序,並且正努力刪除一條記錄。這裏是行動的定義:Ember destroyRecord失敗

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/

回答

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); 
    }); 
} 
+0

我的動作有'{{行動「刪除」賽}}'什麼應該是什麼? –

+0

模板沒問題,這是你的控制器的功能。我已經通過回答更新了。 – splattne

+0

成功!我會回來並稍後再接受(仍然在接受凍結的範圍內) –

相關問題