作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我使用 Ember Router 时,如何在模板中定义连接到 Controller 的操作?
示例如下: http://jsfiddle.net/KvJ38/3/
在“我的个人资料”下有两个操作:一个是在国家上定义的,并且正在工作两个是在 Controller 上定义的。我怎样才能让它发挥作用还是应该使用其他方法?
App.Router = Em.Router.extend({
enableLogging: true,
location: 'hash',
root: Em.State.extend({
// EVENTS
goHome: Ember.State.transitionTo('home'),
viewProfile: Ember.State.transitionTo('profile'),
// STATES
home: Em.State.extend({
route: '/',
connectOutlets: function(router, context) {
var appController = router.get('applicationController');
appController.connectOutlet(App.HomeView);
}
}),
// STATES
profile: Em.State.extend({
route: '/profile',
connectOutlets: function(router, context) {
var appController = router.get('applicationController');
appController.connectOutlet(App.ProfileView);
}
}),
one: function() {
alert("eins");
},
})
});
最佳答案
操作的默认目标是路由器,但您可以在模板中定义另一个目标:
{{action two target="controller"}}
并在“App.ProfileController”中添加“二”函数。
更新
这个答案在 2012 年中期有望是正确的。现在(2014 年 9 月),文档说:
默认情况下,{{action}}
帮助器会触发模板 Controller 上的方法。[...] 如果 Controller 没有在其 actions 对象中实现与其操作同名的方法,则该操作将被发送到路由器,其中当前事件的叶路由将有机会处理该操作。 [...] 如果模板的 Controller 和当前事件的路由都没有实现处理程序,则该操作将继续冒泡到任何父路由。最终,如果定义了 ApplicationRoute
,它将有机会处理该操作。当触发某个操作,但在 Controller 、当前路由或任何当前路由的祖先上没有实现匹配的操作处理程序时,将会抛出错误。
关于Ember.js 路由器操作到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11050956/
我是一名优秀的程序员,十分优秀!