Cha*_*lie 13 javascript ember.js ember-old-router
我有一个动作:
{{action create target="controller"}}
Run Code Online (Sandbox Code Playgroud)
我已将其定位到绑定控制器(而不是路由器),如下所示:
App.AddBoardController = Ember.Controller.extend
create: ->
App.store.createRecord App.Board, {title: @get "boardName"}
App.store.commit()
//TODO: Redirect to route
Run Code Online (Sandbox Code Playgroud)
如何从控制器操作重定向回路由?
Hao*_* Li 18
使用transitionToRoute('route')在Ember控制器操作中重定向:
App.AddBoardController = Ember.Controller.extend({
create: function(){
...
//TODO: Redirect to route
this.transitionToRoute('route_name');
}
...
Run Code Online (Sandbox Code Playgroud)
Mik*_*ski 17
事实上,这不是Ember惯用语.据我所知,以及我从Tom Dale自己学到的东西,这里有一些关于该代码的评论:
你绝对应该把动作放在路由器里面,并相应地转换.
希望这会有所帮助.
UPDATE
第一个例子(靠近你的样本)
在适当的路线:
saveAndReturnSomewhere: function (router, event) {
var store = router.get('store'),
boardName = event.context; // you pass the (data|data container) here. In the view: {{action saveAndReturnSomewhere context="..."}}
store.createRecord(App.Board, {
title: boardName
});
store.commit();
router.transitionTo('somewhere');
}
Run Code Online (Sandbox Code Playgroud)
重构的例子
我建议你有以下路线:
show:显示现有项目,edit:建议输入项目的字段进入封闭路径,跟随事件处理程序:
createItem:创建新记录并转换到edit路线,例如editItem:transitionTo editroute进入edit路径,跟随事件处理程序:
saveItem:将提交存储和转换到show路由,例如| 归档时间: |
|
| 查看次数: |
18632 次 |
| 最近记录: |