Dies ist Code-Snippet, das mein Problem erschafft:3rd-Party-Richtlinie in einer anderen Richtlinie bei der Verwendung von "Controller als ..." Syntax
html:
...
<div ng-controller="worker as workerCtrl">
<my-directive label="label" controllerAs="workerCtrl" function="fileUpload(e, this.options)"></my-directive>
</div>
Controller:
...
function fileUpload(file, options){...}
...
Direktive:
function myDirective($compile) {
var directive = {
restrict: 'E',
link: link
};
return directive;
function link(scope, element, attrs) {
var htmlText = '<lx-file-input ' +
'change="'+attrs.controllerAs+'.'+attrs.uploadFunction+'" ' +
'label="'+attrs.label+'"></lx-file-input>';
element.replaceWith($compile(htmlText)(scope));
}
}
Sollte sein: (‚lx-Datei-input‘ ist ein 3rd-Party-Richtlinie ...)
<lx-file-input change="workerCtrl.fileUpload(e, this.options)" label="someLabel"</lx-file-input>
Das Problem ist, dass der Zeitpunkt der Winkel Kompilieren und Linken ausgeschaltet ist, und die Vorlagen bleibt mit HTML String anstelle der kompilierten Funktion. Ich weiß, es wird funktionieren, wenn ich den Controller in der Richtlinie festgelegt werden, aber ich will es die gleiche Funktion in dem gleichen aus der HTML-Rahmen ‚workerCtrl‘ verwenden.
// HackMagicDragonsBeHere Was über eine schreckliche 2-Schritt Instanziierung? Erstellen eine temporäre Direktive, die die Controller-Funktion analysiert und ersetzt sich mit einer Richtlinie, die in der 3rd-Party-Richtlinie tatsächlich bringt. : D Ich frage mich nur, ob es funktionieren würde ... –