Betrachten Sie den folgenden Code ein:ändern registrierte Komponente in Bootstrap-Periode in Angular 1.5
<!doctype html>
<html>
<body>
<main></main>
<script src="http://code.angularjs.org/snapshot/angular.js"></script>
<script src="script.js"></script>
</body>
</html>
script.js
window.name = "NG_DEFER_BOOTSTRAP!";
angular.module('myApp', []);
angular.module('myApp')
.component('main', {
controller: function() {
this.greeting = 'World';
},
template: '<h1>Hello {{ $ctrl.greeting }} from main</h1>'
});
angular.element(document).ready(function() {
angular.bootstrap(document, ['myApp']);
// Customizing comes here
// Should change the template to "Hello World from custom main"
angular.resumeBootstrap();
});
http://plnkr.co/edit/xftcWVXdFslptTGJiNM7?p=preview
Ich habe eine Basisanwendung und eine eigene "slot" auf der Serverseite, wo es möglich ist, Code zwischen angular.bootstrap(document, ['myApp']);
und angular.resumeBootstrap();
einzufügen, um benutzerdefinierte Logik der App hinzuzufügen.
Dies funktioniert z. B. beim Hinzufügen neuer Module zur App.
Gibt es eine Möglichkeit, bereits registrierte Komponenten zu ändern? Ich möchte grundsätzlich in der Lage sein, die Signatur des registrierten Komponentenobjekts zu ändern.
Im obigen Beispiel und im Plunkr möchte ich einfach die "Vorlage" der bereits registrierten Komponente main
auf etwas anderes ändern.
Beispiel bearbeitet: Added Controller und geändert plunkr
dies scheint wie der falsche Ansatz, dies zu lösen. Die gängigste Methode zur Lösung dieses Problems wäre die Verwendung von 'templateUrl', das Festlegen dieser Eigenschaft auf eine Variable, die auf eine bestimmte Datei verweist, und das Aktualisieren der Eigenschaft, sodass sie bei Bedarf auf eine Datei verweist, die die neue Vorlage enthält. – Claies
@Claies die Vorlage war nur für das minimale Beispiel. Ich möchte auch den Controller wenn möglich ändern - Bindungen - was auch immer. Ich möchte grundsätzlich auf das Komponentenoptionsobjekt zugreifen. – madflow
Was ist der Anwendungsfall hier? Warum sollte man überhaupt eine Komponente für verkapselte Funktionalität erstellen, wenn man nur plant, die Funktionalität zu zerlegen und sie durch etwas anderes zu ersetzen? Scheint so, als würde das zu unkontrollierbarem Code führen, wo man einer Komponente nicht trauen kann, das zu tun, was sie bewirbt. – Claies