一尘不染

动态templateUrl-AngularJS

angularjs

因此从Angular
1.1.4开始,您可以拥有一个动态模板网址。从这里

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'
  }
}

鉴于我无权访问示波器,该如何管理?


阅读 241

收藏
2020-07-04

共1个答案

一尘不染

还可以在AngularJS中创建动态模板:在您的指令中使用:

template : '<div ng-include="getTemplateUrl()"></div>'

现在,您的控制器可以决定使用哪个模板:

$scope.getTemplateUrl = function() {
  return '/template/angular/search';
};

由于您可以访问范围参数,因此您还可以执行以下操作:

$scope.getTemplateUrl = function() {
  return '/template/angular/search/' + $scope.query;
};

因此,您的服务器可以为您创建一个动态模板。

2020-07-04