Подтвердить что ты не робот

Как я могу динамически построить ng-include src?

У меня есть следующий код:

<div ng-repeat="module in modules" id="{{module.Id}}">
    <ng-include ng-init="bootstrapModule(module.Id)" src=""></ng-include>
</div>

Я хочу иметь возможность построить строку в src следующим образом:

/modules/{{module.Name}}/{{module.Name}}.tpl.html

Но я продолжаю бить блокпосты. Я попытался использовать функцию обратного вызова для ее создания,

$scope.constructTemplateUrl = function(id) {
    return '/modules/' + id + '/' + id + '.tpl.html';
}

Но это происходит снова и снова, и это не похоже на это. Я также попытался построить его так:

ng-src="/modules/{{module.Id}}/{{module.Id}}.tpl.html"

Но это тоже не работает. Вместо того, чтобы часами биться вокруг куста, я задавался вопросом, не придумал ли кто-нибудь еще что-то подобное и какие-нибудь идеи?

Кроме того, когда я беру модули из $resource, я возвращаю их асинхронно с $q, поэтому я не могу пройти и добавить его в модули до того, как в контроллере, поскольку $scope.modules просто равен then в этой точке.

Любые идеи?

4b9b3361

Ответ 1

Директива

ngInclude | src требует выражения angular, что означает, что вы, вероятно, должны написать

ng-src="'/modules/' + module.Id + '/tpl.html'"

Из http://docs.angularjs.org/api/ng.directive:ngInclude

ngInclude | src string angular выражение, оценивающее URL. Если source - это строковая константа, убедитесь, что вы завернули ее в кавычки, например. src= "myPartialTemplate.html".

Возможно, было бы лучше, если вы построите url в модели вместо встроенного HTML

<div ng-repeat="module in modules" id="{{module.Id}}">
    <ng-include src="module.url"></ng-include>
</div>