У меня возникла проблема с областью, потерянной при использовании компиляции $, чтобы создать динамический шаблон для моей директивы. Смотрите ниже код (обрезанный для ясности):
(function() {
'use strict';
angular.module('cdt.dm.directives').directive('serviceSources', ['$http', '$templateCache', '$compile', '$parse',
function ($http, $templateCache, $compile, $parse) {
return {
restrict: 'E',
replace: true,
scope: {
type: '=',
sources: '='
},
link: function (scope, element, attr) {
var template = 'Template_' + scope.type + '.html';
$http.get(template, { cache: $templateCache }).success(function (tplContent) {
element.replaceWith($compile(tplContent)(scope));
});
$compile(element.contents())(scope);
}
}
}
])
})();
, который работает и шаблон HTML загружается.
шаблон HTML выглядит следующим образом:
<table>
<thead>
<tr>
<th>File</th>
</tr>
</thead>
<tbody data-ng-reapeat="src in sources">
<tr>
<td>{{src.fileName}}</td>
</tr>
</tbody>
источников представляет собой массив из двух элементов. В рамках директивы это определенно правильно, но в шаблоне ng-repeat не работает (я думаю, потому что на данном этапе источники не определены).
Кто-нибудь знает, что я делаю неправильно?
Интересно, можете ли вы просто использовать 'templateUrl' вместо этого? –
Нет, шаблон должен быть динамическим, основанным на значении, переданном переменной «type» в области. Поэтому я не могу использовать templateUrl. – Sam
Я отредактировал исходный код согласно вашей рекомендации, спасибо. – Sam