Angularjs 在templateURL中返回函数有什么好处?
从 templateUrl也可以是返回url的函数。它采用一个预设参数stateParams,该参数未注入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路由器
$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
这样的函数