【发布时间】:2014-04-10 00:44:47
【问题描述】:
在父控制器中,像这样:
@NgController(
selector: '[main-ctrl]',
publishAs: 'ctrl')
class MainController {
Scope scope;
bool showHeaderFooter=false;
}
在子控制器中,如何更新 showHeaderFooter 变量?
@NgController(
selector: '[login-ctrl]',
publishAs: 'login')
class LoginController {
Scope scope;
NgRoutingHelper routingHelper;
var username, pwd;
LoginController(this.routingHelper,this.scope);
void login(){
if(username!=null&&pwd!=null){
routingHelper.router.go('welcome', {});
scope.parentScope.showHeaderFooter=true;
}
}
}
此代码无法正常工作。
【问题讨论】:
-
您介意修改父控制器以使其成为可能还是父控制器不知道这一点?
-
@GünterZöchbauer 在 AngularJs 中,我们可以使用 emit 和 on event 来更改父范围变量,但我不清楚如何在 angular-dart 中实现这一点。
-
我尝试使用
emit做一个简单的例子。您能否看一下我当前的答案,并添加一些有关您首选方法的信息。 -
@GünterZöchbauer 你的代码没问题,但我不明白 "(scope.parentScope.context['mainCtrl'] as MainController).showHeaderFooter=true;"和“scope.context['mainCtrl'] = this;”您能否为此提供更多信息或文档?
-
我在答案的顶部添加了一些解释,但我认为使用
emit是更好的方法。parentScope仅在您知道MainController实际上是您的直接父作用域时才有效。emit适用于所有祖先。
标签: dart angular-dart