angularjs - 如何动态构建 ng-include src?

标签 angularjs angularjs-ng-repeat angularjs-ng-include

我有以下代码:

<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"

但这也不起作用。我没有花几个小时拐弯抹 Angular ,而是想知道是否还有其他人遇到过这样的事情并有什么想法?

此外,当我从 $resource 获取模块时,我将使用 $q 异步返回它们,因此我似乎无法在 Controller 中将其作为 $scope.modules 仔细检查并将其添加到模块中 就等于此时的 then 函数。

有什么想法吗?

最佳答案

ngInclude | src 指令需要一个 Angular 表达式,这意味着您可能应该编写

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

来自http://docs.angularjs.org/api/ng.directive:ngInclude

ngInclude|src string angular expression evaluating to URL. If the source is a string constant, make sure you wrap it in quotes, e.g. src="'myPartialTemplate.html'".

如果您在模型中构建 url 而不是内联 HTML,可能会更好

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

关于angularjs - 如何动态构建 ng-include src?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18976255/

相关文章:

html - Ng-include 中的文本不突出显示

angularjs - Angular UI - Bootstrap Accordion 不工作/动态 ng-include

angularjs - 有没有事件表明上传的文件是用CollectionFS写的?

javascript - karma 代码执行

angularjs - ng-repeat 中的 ng-class : conditional class names depending on the item parameters

javascript - ng-repeat 不使用 track by 更新模型

python - 如何使用 unicode 从 python 服务解析 JSON?语法错误 : Unexpected token u

javascript - 如何在 Angular JS 中使用带有 Http 请求的服务

javascript - NG-Repeat 和 ng-table 问题

javascript - 从 ng-include Controller 修改主 Controller $scope