В AngularJS как получить доступ к области действия компонента во время создания шаблона HTML? - PullRequest
0 голосов
/ 22 декабря 2018

Так что, не объясняя мне, почему это плохая идея, я надеюсь, что кто-то может посоветовать мне, как добиться следующего.

Используя 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 есть $ scope с собственным $ ctrl, который я хочу вставить в родительский объект.И на самом деле, я хочу иметь возможность связать это так, что если в миксе есть ng-if и child-ctrl переходит из включенного в не включенный, 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">

Так что это работает, и я думаю, что это довольно надежно - просто интересно, можно ли это сделать, используя вместо этого директивы атрибутов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...