gpt4 book ai didi

Ember.js 路由器操作到 Controller

转载 作者:行者123 更新时间:2023-12-02 19:07:46 24 4
gpt4 key购买 nike

当我使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com