将ng-include的URL绑定到特定路由

时间:2014-06-10 16:35:37

标签: javascript angularjs angular-ui-router

我有很多路线:

routes.js

$routeProvider.when(
  '/dashboard/one', 
  {
    templateUrl: 'partials/dashboard.html', 
    controller: 'DashboardCtrl'
  });
$routeProvider.when(
  '/dashboard/two', 
  {
    templateUrl: 'partials/dashboard.html', 
    controller: 'DashboardCtrl'
  });

我的 dashboard.html 如下所示:

...
<ng-include src="dashboardPath"></ng-include>
...

SRC dashboardPath取决于路线的位置。例如,当路由为dashboardPath时,我希望one.html/dashboard/one。如何将src的{​​{1}}绑定到路径网址?

2 个答案:

答案 0 :(得分:1)

您应该使用ng-view,因为它基于路线:

https://docs.angularjs.org/api/ngRoute/directive/ngView

如果你想跟踪两者,你可以这样做:

$routeProvider.when(
  '/dashboard/:type', 
  {
    templateUrl: 'partials/dashboard.html', 
    controller: 'DashboardCtrl'
  });

然后在你的控制器中

function DashboardCtrl($routeParams){
    $routeParams.type //'one' or 'two'
}     

答案 1 :(得分:1)

根据Mathew的建议,你应该真正使用ng-view。即便如此,让我试着按照你的要求回答它。

首先,如果你尝试

,你将陷入困境
<div ng-include src="dashboardPath">
</div>

您应该尝试将url绑定到对象属性而不是基本数据类型。 因此,在init方法中,您可以执行类似的操作。

var path = currentPath;//Retrieve it.
$scope.dashboardPath={};
if(path==='/dashboard/one')
    $scope.dashboardPath.url='pageOne.html';
if(path==='/dashboard/two')
    $scope.dashboardPath.url='pageTwo.html';

因此。你的HTML代码应该像

<div ng-include src="dashboardPath.url">
</div>