我有一个使用“控制器作为”方法的 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 属性更新时,网页在“Length”之后的 HTML 中显示正确的数组长度,但指令没有更新,仍然显示“Hello 0”。如果在指令中添加一个按钮,以便我可以检查其 documentReferenceStructure 属性的值,它似乎永远不会更新。
更新页面控制器的 documentReferenceStructure 属性不会向下传播到指令中,这不是 scope: { documentReferenceStructure : "=" } 应该做的吗?
我错过了什么?链接()中的东西也许?