Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在templateURL中返回函数有什么好处?_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs 在templateURL中返回函数有什么好处?

Angularjs 在templateURL中返回函数有什么好处?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,从 templateUrl也可以是返回url的函数。它采用一个预设参数stateParams,该参数未注入 $stateProvider.state('contacts', { templateUrl: function ($stateParams){ return '/partials/contacts.' + $stateParams.filterBy + '.html'; } }) 在templateURL中返回函数有哪些好处?抱歉,这有点含糊。我正试图完全理解ui路由器

templateUrl也可以是返回url的函数。它采用一个预设参数stateParams,该参数未注入

$stateProvider.state('contacts', {
  templateUrl: function ($stateParams){
    return '/partials/contacts.' + $stateParams.filterBy + '.html';
  }
})

在templateURL中返回函数有哪些好处?抱歉,这有点含糊。我正试图完全理解ui路由器。

开发者指南中有一个很好的例子

其主要思想是,您可以“动态”选择最适合当前实例的模板:

angular.module('docsTemplateUrlDirective', [])
  .controller('Controller', ['$scope', function($scope) {
    $scope.customer = {
      name: 'Naomi',
      address: '1600 Amphitheatre'
    };
  }])
  .directive('myCustomer', function() {
    return {
      templateUrl: function(elem, attr){
        return 'customer-'+attr.type+'.html';
      }
    };
  });
正如您所想象的,在本例中,您可以通过分配一个名为type的属性来配置最终模板url:

<div ng-controller="Controller">
  <div my-customer type="name"></div>
  <div my-customer type="address"></div>
</div>

在ui路由器场景中,您可以访问状态参数,但想法是相同的。

一个“好处”可能是一个奇怪的说法。它为路由器添加了一种方式,根据
$stateParams
,动态决定对给定路由使用哪个模板。实现类似功能的另一种方法是在路线的单个模板中使用
ngIf
s或
ngSwitch
s

我认为您使用哪一种可能取决于您自己的偏好/您认为一个好的编码实践适合于手头的任务。如果我有两个完全不同的长模板,我可能会将该函数用于动态模板url。如果我有短的或非常类似的模板,那么我可能会使用
ngIf

此外,我现在已经使用过几次ui路由器,到目前为止,我从未使用过
templateUrl
这样的函数