wake-up-neo.com

Wie erstelle ich dynamisch ein ng-include src?

Ich habe folgenden Code:

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

Ich möchte in der Lage sein, einen String in src wie folgt zu erstellen:

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

Aber ich treffe immer wieder Straßensperren. Ich habe versucht, eine Rückruffunktion zu verwenden, um es zu erstellen,

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

Aber dies wird immer und immer und immer wieder aufgerufen und es scheint nicht so zu sein. Ich habe auch versucht, es so zu konstruieren:

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

Aber das funktioniert auch nicht. Anstatt stundenlang um den heißen Brei herumzureden, habe ich mich gefragt, ob noch jemand auf so etwas gestoßen ist und irgendwelche Ideen hat.

Außerdem, wenn ich die Module von $ resource hole, gebe ich sie asynchron mit $ q zurück, so dass ich es scheinbar nicht durchgehen und sie in die Module vor dem Controller einfügen kann, da $scope.modules Nur einem then entspricht. Funktion an diesem Punkt.

Irgendwelche Ideen?

27
Adam K Dean

ngInclude | src Direktive erfordert einen angular Ausdruck, was bedeutet, dass Sie wahrscheinlich schreiben sollten

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

From http://docs.angularjs.org/api/ng.directive:ngInclude

ngInclude | src string angular Ausdruck, der als URL ausgewertet wird. Wenn die Quelle eine Zeichenfolgenkonstante ist, stellen Sie sicher, dass Sie sie in Anführungszeichen setzen, z. B. src = "'myPartialTemplate.html'".

Es ist möglicherweise besser, wenn Sie die URL im Modell anstelle von Inline-HTML erstellen

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