Угловая директива не обнаруживает изменения в свойствах родительского контроллера

У меня есть HTML-файл, который использует подход "контроллер как". Он имеет сложный тип свойства (массив объектов), который я хочу представить пользователю с помощью директивы Angular, чтобы я мог использовать его и на других страницах. Моя директива также использует подход "контроллер как".

--- Snippet from HTML ---
<body ng-controller="documentViewerController as controller">
  Length {{ controller.documentReferenceStructure.length }}
  <document-reference document-reference-structure="controller.documentReferenceStructure"></document-reference>       

--- Snippet from my directive's template ---
<p>Hello {{ controller.documentReferenceStructure.length}}</p>

--- My directive ---
module myapp.directives {
    export class documentReferenceController {
        public documentReferenceStructure: IDocumentReferenceStructurePart[];

        constructor() {
            this.documentReferenceStructure = [];
        }

        public update() {
            this.documentReferenceStructure = [];
        }

        public static registerDirective(app: ng.IModule) {
            app.controller("documentReferenceController", documentReferenceController);
            app.directive("documentReference", function () {
                return {
                    restrict: "EA",
                    templateUrl: "/app/directives/documentReference/documentReference.html",
                    scope: {
                        documentReferenceStructure: "="
                    },
                    controller: "documentReferenceController",
                    controllerAs: "controller",
                    link: (scope, element, attributes, controller : documentReferenceController) => {
                    }
                };
            });

        }
    }
}

Когда свойство documentReferenceStructure главного контроллера обновляется, веб-страница показывает правильную длину массива в HTML после "Length", но директива не обновляется и по-прежнему говорит "Hello 0". Если добавить кнопку в директиву, чтобы я мог проверить значение ее свойства documentReferenceStructure, кажется, что она никогда не будет обновлена.

Обновление свойства documentReferenceStructure контроллера страницы не распространяется вниз в директиву, разве это не то, что должна делать область действия: { documentReferenceStructure: "=" }?

Что мне не хватает? Что-то в ссылке () возможно?

1 ответ

Проблема заключалась в том, что я пропустил следующую собственность в моей директиве регистрации

bindToController: правда,

пример

            return {
                restrict: "EA",
                templateUrl: "/app/directives/documentReference/documentReference.html",
                scope: {
                    documentReferenceStructure: "="
                },
                controller: "documentReferenceController",
                controllerAs: "controller",
                bindToController: true
            }
Другие вопросы по тегам