在AngularJS中,如何在HTML模板实例化期间访问组件的作用域?

时间:2018-12-22 19:24:07

标签: angularjs typescript

因此,在不向我解释为什么这是一个坏主意的情况下,我希望有人可以向我建议如何实现以下目标。

使用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">

所以这行得通,而且我认为它非常健壮-只是想知道是否可以使用属性指令来完成。

0 个答案:

没有答案
相关问题