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

0

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

--- 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 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 после "Длина", но директива не обновляется и все еще говорит "Hello 0". Если добавить в директиву кнопку, чтобы я мог проверить значение свойства documentReferenceStructure, кажется, что она никогда не обновляется.

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

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

  • 0
    Густав, один - это контроллер страницы, другой - другой контроллер для директивы.
Теги:
angularjs-directive

1 ответ

0

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

bindToController: true,

пример

            return {
                restrict: "EA",
                templateUrl: "/app/directives/documentReference/documentReference.html",
                scope: {
                    documentReferenceStructure: "="
                },
                controller: "documentReferenceController",
                controllerAs: "controller",
                bindToController: true
            }
  • 0
    ты прав насчет моего ответа. Решите обновить угловое знание. Единственное, что я хочу извиниться, это то, что использование $ scope и link / compile - самый простой и простой способ, если у вас нет знаний.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню