因此从Angular 1.1.4开始,您可以拥有一个动态模板网址。从这里,
templateUrl-与模板相同,但是从指定的URL加载模板。由于模板加载是异步的,因此在加载模板之前,将暂停编译/链接。 您可以将templateUrl指定为表示URL的字符串,或者指定为使用两个参数tElement和tAttrs(在下面的编译函数api中进行描述)并返回表示URL的字符串值的函数。
templateUrl-与模板相同,但是从指定的URL加载模板。由于模板加载是异步的,因此在加载模板之前,将暂停编译/链接。
您可以将templateUrl指定为表示URL的字符串,或者指定为使用两个参数tElement和tAttrs(在下面的编译函数api中进行描述)并返回表示URL的字符串值的函数。
我如何利用它来基于指令中的属性生成动态模板?显然,这是行不通的,因为tAttrs.templateType只是字符串“ templateType”
templateUrl: function (tElement, tAttrs) { if (tAttrs.templateType == 'search') { return '/b/js/vendor/angular-ui/template/typeahead/typeahead.html' } else { return '/b/js/vendor/angular-ui/template/typeahead/typeahead2.html' } }
鉴于我无权访问示波器,该如何管理?
还可以在AngularJS中创建动态模板:在您的指令中使用:
template : '<div ng-include="getTemplateUrl()"></div>'
现在,您的控制器可以决定使用哪个模板:
$scope.getTemplateUrl = function() { return '/template/angular/search'; };
由于您可以访问范围参数,因此您还可以执行以下操作:
$scope.getTemplateUrl = function() { return '/template/angular/search/' + $scope.query; };
因此,您的服务器可以为您创建一个动态模板。