我尝试传入来自控制器列表的字符串,其中包含应该动态获取模板的模板名称(即template =" {{item.template}}& #34)
我试图用好的方法对我的问题做一些调试。的console.log。当templateUrl:function(...)进行求值时,似乎Angular没有评估模板=" {{item.template}}"结果是{{item.template}}而不是我列表中的字符串。
我错过了什么会导致Angular不评估列表中的字符串? 提前致谢!
HTML下方:
<workflow ng-controller="ModalController as modalController">
<workflow-step ng-class="{'inactive' : index > 0 }" ng-repeat="(index,item) in modalController.list">
<dynamic-questions template="{{item.template}}"></dynamic-questions>
</workflow-step>
</workflow>
这是DynamicQuestions指令,它应该动态使用上面代码片段中的模板值。
angular.module('app').directive('DynamicQuestions',
function () {
return {
restrict: 'E',
replace: true,
templateUrl: function (elem, attr) {
return '/app/templates/' + attr.template +'.html';
}
};
});
这是ModalController,它包含一个我打算用来控制动态模板的简单字符串列表
angular.module('app')
.controller('ModalController',
function() {
var self = this;
self.list = [
{ template: "intro" },
{ template: "contactinfo" },
{ template: "mailingAddress" },
{ template: "dateOfBirth" }
];
});
旁注: 我已经看到了一些动态指令的例子,其中在指令中使用了范围,然后使用链接函数来确定模板
scope: { template: '@'},template: '<ng-include src="getTemplateUrl()"/>'
也许这是实现目标的更好方法。