Wil*_*iam 7 javascript ember.js
我有一个组件,我想触发路由级别操作,以便我可以转换到不同的路由.
App = Ember.Application.create();
App.Router.map(function() {
});
App.IndexRoute = Ember.Route.extend({
actions: {
complete: function() {
// This never happens :(
console.log('Triggered complete!');
}
}
});
App.MyAreaComponent = Ember.Component.extend({
actions: {
clickMyButton: function() {
console.log('Triggering complete action.');
// Attempting to trigger App.IndexRoute.actions.complete here
this.sendAction('complete');
}
}
});
Run Code Online (Sandbox Code Playgroud)
我想要完成的是当MyAreaComponent的'clickMyButton'动作被触发时,它将触发IndexRoute的'完整'动作.
我已经设置了一个jsbin来演示我的问题:
http://emberjs.jsbin.com/wivuyike/1/edit
如果控制器未实现与其操作对象中的操作同名的方法,则该操作将被发送到路由器,其中当前活动的叶路由将有机会处理该操作.
所以考虑到这一点,我希望组件说"让我们检查一下我的控制器,看看它是否有一个叫'完全'的动作.不是吗?好吧,让我们检查一下我的路线(IndexRoute),看它是否有一个叫'完成'的动作"是的?好的,触发它!"
我唯一能想到的是,由于组件的设置方式,IndexRoute未设置为组件的路径,因此动作冒泡只会在控制器处停止.
我不确定从哪里开始.我是否需要做一些特别的事情才能让我的组件知道我的IndexRoute?
lam*_*der 10
这是您更新的样本 - http://emberjs.jsbin.com/wivuyike/3/edit
因此,从组件中你需要让自己冒出来,这可以通过以下方式完成
this.sendAction('clickMyButton');
Run Code Online (Sandbox Code Playgroud)
然后在使用组件时,将需要触发的路径操作分配给组件操作,如下所示
{{my-area clickMyButton='complete'}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5144 次 |
| 最近记录: |