Ich hatte gerade ein ähnliches Problem in unserer Anwendung nach der Erstellung unserer App mit $compileProvider.debugInfoEnabled(false);
konfrontiert. Ich musste später auf einige der isolierenden Bereiche unserer Direktive zugreifen, konnte aber die Methode isolateScope()
nicht verwenden. Um das Problem zu bekommen, habe ich eine Hilfsfunktion in einem Utils Dienst, der wie folgt aussieht:
this.setElementIsolateScope = function(element, scope) {
element[0].isolateScope = function() {
return scope;
};
};
dann in jeder Richtlinie, wo ich brauchte später in die Lage sein, um den Isolat Umfang greift mich auf diese Funktion innerhalb der link()
genannt Funktion: Da element
ein jqLite-Objekt ist, müssen Sie die isolateScope()
-Funktion auf element[0]
setzen. Sie sollten bereits die jqLite eingewickelten element
und scope
bereits in Ihre Link-Funktion übergeben haben, die Sie dann einfach an Ihre Service-Methode übergeben.
Utils.setElementIsolateScope(element, scope);
dann, um später den Isolat Umfang zuzugreifen, würden Sie einen Verweis auf Ihr Element und dann das tun (child_element
unter der Annahme, der Verweis auf Ihr Elemente/Richtlinie):
var child_iso_scope = _.isFunction(child_element.isolateScope) && child_element.isolateScope();
Je nachdem, wie Sie werden den Verweis auf Ihrem Element bekommen, müssen Sie es einen jqLite Wrapper wie diese wickeln:
child_element = angular.element(child_element);
Und dann wie oben die gleiche Art und Weise verwenden, das Isolat zu erhalten Umfang. Hoffe das hilft!