Ember JS:父路由/控制器如何观察它的子路由/控制器的变化?
Ember JS: How can a parent route/controller observe its child route/controller changing?
我正在制作一个Ember应用程序到船上的用户。该应用程序有一个进度条,当你在登录过程中取得进展时,进度条会显示动画。我的做法是让进度条成为父视图,用于在其中更改的各个步骤。
现在我需要在用户完成登录时更新进度条。是否有一种方法,我的ProgressBarRoute
/ProgressBarController
可以观察到它的子路由/控制器的变化,使父视图可以处理更新进度条?
的路线:
App.Router.map(function() {
this.resource('progressBar', function() {
this.resource('pickApps'),
this.resource('pickNetworks');
this.resource('docs');
});
});
进度条视图,它的子步骤有一个出口:
<script type="text/x-handlebars" id="progressBar">
<section class="progress">
{{!-- Progress bar here --}}
</section>
{{outlet}}
</script>
我会从子节点向父节点发送一个操作,上游的通信总是比下游的更容易(因为父母并不总是有孩子)。
下面的内容:
App.ParentController = Em.ObjectController.extend({
actions:{
newStep: function(step){
}
}
});
App.ChildController = Em.ObjectController.extend({
someMethod: function(){
this.parentController.send('newStep', 7); // or whatever
}
});
不需要重复这个逻辑,你可以在一个基本路由中设置它,并让每个资源扩展该路由。
App.BaseStepRoute = Em.Route.extend({
setupController: function(controller, model){
this._super(controller, model);
var step = this.get('step'),
progressController = this.controllerFor('progressBar');
progressBar.send('newStep', step);
}
});
App.PickAppsRoute = App.BaseStepRoute({
step = 1,
...
});
相关文章:
- 未激发路由的控制器属性上的观察者
- Ember访问公共路由/控制器mxiin中的控制器属性
- 控制器操作的路由问题
- EmberJs-将所有来自子组件的操作路由到父组件,再路由到父控制器
- 控制器和支持路由之间的角度保持选择
- 角度.js - 识别通过路由或 ng 控制器调用的控制器
- Angularjs:路由后如何调用控制器函数
- AngularJS-有条件地为路由设置控制器
- Angular JS$location.path(..)未启动路由控制器
- AngularJS路由未绑定控制器
- 在不重新加载控制器的情况下更新路由
- Ember添加了对转换调用上下文(路由/控制器)的检查
- 使用ng-include调用控制器时AngularJS路由解析
- 动态添加/注册AngularJS控制器,无需路由
- Ember.js使用Router架构获取父路由的控制器
- 在Emberjs中设置从路由到控制器的数据错误
- 余烬中嵌套路由的控制器/路由约定
- AngularJS无法从控制器路由
- 通过聚合物核心页组件指定默认的熨斗控制器路由(内部元素)
- 安贝& # 39;需要# 39;属性不能工作,除非你先访问所需的控制器路由