因此,在不向我解释为什么这是一个坏主意的情况下,我希望有人可以向我建议如何实现以下目标。
使用AngularJS 1.7,Typescript和MobX,我有一个视图控制器,该视图控制器引用了子组件的控制器。
class ViewCtrl {
@observable myChildCtrl: IChildCtrl;
这就是我要在HTML中编写的内容(尽管我怀疑ng-init不是它):
<child-ctrl ng-init="$ctrl.myChildCtrl = **myChildCtrl's $ctrl**"></child-ctrl>
也就是说,$ ctrl引用ViewCtrl。 childCtrl有一个带有自己的$ ctrl的$ scope,这就是我想注入到父级的东西。实际上,我希望能够绑定它,以便在混合中包含ng-if并且child-ctrl从include变为not included时,myChildCtrl也将设置为null。
对此,我有一个有点棘手的解决方案,但我想知道是否有更清洁的方法。
偶然地,我的解决方案是为包含以下内容的组件创建基类:
private $postLink() {
this.preFlight();
runInAction(() => {
this.target[this.property] = this.$scope['$ctrl'];
});
}
private $onDestroy() {
this.preFlight();
runInAction(() => {
this.target[this.property] = null;
});
}
然后实例化如下:
<child-ctrl target="$ctrl" property="myChildCtrl">
所以这行得通,而且我认为它非常健壮-只是想知道是否可以使用属性指令来完成。