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