Ich habe folgende Direktive definiert:
app.directive("copyExpenditure", function(){
return {
restrict: "A",
scope: true,
template: "<button ng-click="copyExpenditure()">click me</button>"
}
});
Wenn ich diese Direktive direkt in die HTML-Datei einfüge, funktioniert sie wie erwartet.
<div copy-expenditure></div>
Jetzt erstelle ich ein Raster aus einem Controller heraus und möchte der copyExpenditure-Direktive jeder Zeile dynamisch hinzufügen. Für diese Aufgabe benutze ich Slickgrid und ein benutzerdefinierter Formatierer.
var LinkFormatter = function (row, cell, value, columnDef, dataContext) {
var tag = "<div copy-expenditure></div>";
return tag;
}
Es scheint jedoch, dass dieser benutzerdefinierte Formatierer nicht als Direktive, sondern nur als HTMl gerendert wird. Irgendeine Idee, was zu tun ist? Mein Ziel ist es nur, eine Scope-Funktion mit aufzurufen ng-click
und ein von der LinkFormatter
.
Antworten:
0 für die Antwort № 1Du solltest tun:
$compile(angular.element("<div copy-expenditure></div>"))($scope);
und wenn Sie einige Werte vom Gültigkeitsbereich übergeben haben, tun Sie dies nach dem Kompilieren:
$scope.$digest();