0

Ich habe Probleme mit Angular-Richtlinien.Angular 1 Direktive nicht innerhalb einer Richtlinie innerhalb ng-wiederholen

Mein Ziel ist es, eine Richtlinie mmContentRow für jedes Element in einem Bereich mit ng-repeat zu rendern. Diese Direktive mmContentRow hat eine Vorlage, wo eine andere Direktive relativeDate gerendert wird.

Das Problem ist, dass relativeDate innerhalb mmContentRow nicht gerendert wird. Ich habe viele Lösungen ausprobiert, aber bisher nichts. Hier ist der Code:

parent.html:

<ul> 
    <mm-content-row ng-repeat="report in selected.reports" date="report.reported_date"/> 
    </ul> 

mm-content-row.js

angular.module('inboxDirectives').directive('mmContentRow', function() { 
    return { 
    restrict: 'E', 
    templateUrl: 'mm-content-row.html', 
    scope: { 
     date: '=', 
    } 
    }; 
}); 

mm-content-row.html:

<li> 
    <span>{{date}}</span> 
    <relative-date date="{{date}}"></relative-date> 
</li> 

relative-date.js:

angular.module('inboxDirectives').directive('relativeDate', ['FormatDate', function(FormatDate) { 
    return { 
    restrict: 'E', 
    template: '<span>rendered something</span>', 
    scope: { 
     date: '=', 
    } 
    }; 
}]); 

Beispieldaten:

{ selected: {reports: 
[{reported_date: 1508493112758}, {reported_date: 1508493101933}] 
} } 

gerenderte Ausgabe:

<ul> 
    <li> 
    <span>1508493112758</span> 
    <relative-date date="1508493112758"></relative-date> 
    </li> 
    <li> 
    <span>1508493101933</span> 
    <relative-date date="1508493101933"></relative-date> 
    </li> 
</ul> 

Erwartete Ausgabe:

<ul> 
    <li> 
    <span>1508493112758</span> 
    <span>rendered something</span> 
    </li> 
    <li> 
    <span>1508493101933</span> 
    <span>rendered something</span> 
    </li> 
</ul> 

Soweit ich sehen kann, ist die relative-date innerhalb einer Richtlinie innerhalb ng-repeat doesn Ich werde nicht kompiliert. Ich habe erwartet, dass Angular es automatisch kompiliert, aber es scheint nicht zu passieren. Sollte ich Angular explizit anweisen, relative-date innerhalb mmContentRow zu kompilieren?

Update: Ich habe eine Geige mit vereinfachter Version meines Problems erstellt: http://jsfiddle.net/cbrwizard/4e2r2o07/. Alles funktioniert dort. Seltsam! Ich werde hier ein Update veröffentlichen, wenn ich den Unterschied zwischen der Geige und meinem Code feststelle.

+1

Können Sie ein einfaches Beispiel in jsfiddle erstellen, um die Auflösung schneller zu finden? – Appeiron

+0

immer noch den Kopf kratzen, warum brauchen Sie 2 benutzerdefinierte Direktiven, die in einem – Mudassar

+0

@ Mudassar Ich möchte "relativeDate" auch in anderen Richtlinien wiederverwenden. In diesem Beispiel habe ich die Implementierungsdetails entfernt, damit ich verstehe, woher Ihre Frage kommt – cbrwizard

Antwort

0

Dank @ affairons Vorschlag, habe ich eine Geige http://jsfiddle.net/cbrwizard/4e2r2o07/ erstellt, die mich verstehen, dass das Problem in Angular ist, aber im Code des Projekts.

Es stellte sich heraus, eine Vorlage wurde nicht direkt gerendert, sondern einige Regex Magie wurde verwendet, um die html Datei zu analysieren. Hinzufügen

$compile($(element).contents())(scope)

wo element ist eine HTML-Datei String war genug, damit es funktioniert.

Verwandte Themen