1

Ich möchte eine einzelne Seite App erstellen. Wenn ein Benutzer auf ein bestimmtes Objekt klickt, möchte ich die aktuelle Komponente auf der Seite durch eine andere Komponente ersetzen. Der folgende Code befindet sich in einer Direktive einer Komponente und ich bin in der Lage, dynamisch jede Komponente, die ich mag, auszutauschen. Wenn ich jedoch meine aktuelle Komponente zu <detail></detail> tausche, möchte ich auch einige Informationen an <detail></detail> übergeben, so dass es diese Informationen in seinem Controller manipulieren und diese Informationen innerhalb seiner Vorlage anzeigen kann.

Wie würde ich etwas wie das tun?

var linkFunction = function (scope, element, attributes) { 
    scope.$ctrl.viewDetails = function() { 
    $('#page-wrapper').html($compile('<detail></detail>')(scope)); 
    } 
}; 
+0

Ich bin mir ziemlich sicher, dass es nicht notwendig ist, hier zu kompilieren. Es sieht so aus, als ob der Code in die Kategorie 'Keine Angular mit jQuery verwenden' fällt (http://stackoverflow.com/questions/14994391/thinking-in-angularjs-ifi-i-have-a-jquery-background). . Kombinieren Sie einfach "ng-if" mit "ng-click" in der Direktiven-Vorlage. – estus

Antwort

0

Sie haben typische Anti-Muster. Sie sollten es schräg tun, was viel einfacher und unkomplizierter ist: Verwenden Sie einfach ngIf Direktive. So etwas wie das:

<one ng-if="condition"></one> 
<detail ng-if="!condition" data="$ctrl.someData"></detail> 
Verwandte Themen