没有templateUrl的控制器或来自routeProvider中的routeParams的templateUrl

时间:2013-01-11 19:37:38

标签: javascript html5 templates hash angularjs

我发现不满意的解决方案,其中templateUrl在routeProvider处定义,而在控制器处重新定义。但这是一个多余的要求。 (PS:我在任何文件夹中都有我的模板,并且我有使用此模板名称的哈希路由,如何正确执行此操作(在当前哈希中呈现我的模板)?)

例如,此代码在ng-view标记处呈现我的index.html模板:

angular.module('amiu', [])
.config(function($routeProvider){
  $routeProvider
  .when('/index/', {templateUrl:'partitials/index.html'})
})

但我想这样做:

angular.module('amiu', [])
.config(function($routeProvider, $routeParams){
  $routeProvider
  .when('/:page/', {templateUrl:'template/'+$routeParams.page+'.html'})
  .otherwise({redirectTo:"/"})
})

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我会提出别的建议。 让$ routeProvider“正常”并使用控制器在模板中设置ng-include的路径:

 $routeProvider
  .when('/page/:page', {templateUrl:'template/page.html',
     controller:"PageController"});
在PageController中输入$ routeParams,并用它来修改模板中include的url。

$scope.include_url = $routeParams.page ; 

最后在page.html模板中,连接起来:

<div data-ng-include="'template/page-'+include_url+'.html"></div>

它尚未经过测试,我愿意接受修改和建议。