Nie wiedziałem, jak wyrenderować szablon kątowy do HTML bez powiązań.
Przykład:
scope.value1 = 99;
scope.value2 = "cat";
scope.div_class = "red-cell";
var template = "<div class="{{ div_class }}">{{ value1 }}, {{ value2 }}</div>";
var linkFn = $compile(template);
var content = linkFn(scope);
console.log(content);
Wynik to element DOM z wiązaniami kątowymi:
<div class="{{ div_class }} ng-binding ng-scope">{{ value1 }}, {{ value2 }}</div>
To, czego chcę, to renderowany element bez wiązanie:
<div class="red-cell">99, cat</div>
Jestem świadomy jednorazowych powiązań. Jednak, ponieważ mam już do czynienia z dużą ilością renderowania, myślę, że jest to czystsze niż garść 1 TB w moim szablonie.
Czy to możliwe w kanciastym?
Wyjaśnienie: Chcę renderować szablon do statycznego HTML. Będzie wiele zmiennych, więc musi być renderowana z zakresem / kontekstem.
Odpowiedzi:
0 dla odpowiedzi № 1Zamiast <div>{{ value }}</div>
, możesz spróbować <div ng-bind-html="value"></div>
i sprawdź, czy to działa?
0 dla odpowiedzi nr 2
Jeśli nie chcesz, aby wygenerowane klasy zostały dodane do renderowanego html, musisz:
1. albo nie ma wiążącej treści w szablonie.
2. lub musisz mieć debuginfoenabled jako false:
myApp.config(["$compileProvider", function ($compileProvider) {
$compileProvider.debugInfoEnabled(false);
}]);
0 dla odpowiedzi № 3
Jeśli potrzebujesz statycznego html, po prostu upewnij się, że masz szablon statyczny:
scope.value1 = 99;
scope.value2 = "cat";
scope.div_class = "red-cell";
var template = "<div class="{{ div_class }}">{{ value1 }}, {{ value2 }}</div>";
convertToStatic(template, scope); //regex find {{s*(w+)s*}} and replace with scope[$1] where $1 is the regex capture group
var linkFn = $compile(template);
var content = linkFn(scope);
console.log(content);