2013-05-01 84 views
2

嗨有一个问题,我旁边配置的角度:角度动态templateUrl

angular.module('ow', []). 
config(['$routeProvider', function($routeProvider) { 
$routeProvider. 
    when('/:placeId', {templateUrl: 'partials/menu.html', controller: MenuCtrl}). 
    when('/menu/:itemId', {templateUrl: 'partials/menu-details.html', controller: MenuItemCtrl}). 
    when('/look/refill', {templateUrl: 'partials/refill.html', controller: RefillCtrl}). 
    when('/look/orderCart', {templateUrl: 'partials/orderCart.html', controller: OrderCartCtrl}). 
    when('/lang/:lang', {templateUrl: 'partials/menu.html', controller: LangCtrl}). 
    when('/waiter/:redirect', {templateUrl: "???????", controller: WaiterCtrl}). 
    otherwise({redirectTo: '/0'}); 
}]; 

而不是“?????”我需要把动态URL,努力做到在控制器,如:

function WaiterCtrl($routeParams, $location, sharedData, $http, $route) { 
$http.get(config.urls.ajaxWaiter + "{\"p\":\"" + sharedData.getOrderCart().orderPlace + "\"}").success(function(dataDetails) { 
    if ($routeParams.redirect == "menu") { 
     $route.templateUrl = "partials/menu.html"; 
     $location.path("/"); 
    } 
    if ($routeParams.redirect == "menuDetails") { 
     $route.templateUrl = "partials/menu-details.html"; 
     $location.path("/menu/" + sharedData.getMenu()); 
    } 
    if ($routeParams.redirect == "orderCart") { 
     $route.templateUrl = "partials/orderCart.html"; 
     $location.path("/orderCart"); 
    } 
    if ($routeParams.redirect == "refill") { 
     $route.templateUrl = "partials/refill.html"; 
     $location.path("/refill"); 
    } 
    return $route.templateUrl; 
}); 

}

,但它不工作...你能帮助我吗?

回答

6

你将不能够把动态代码到路由。这是因为路由发生在配置阶段,这是在Angular开始运行应用程序之前执行的。

我认为最简单的或干净的方式做你正在尝试做的仅仅是在路线定义内嵌控制器。我成立了一个简单的普拉克显示路线定义里面重定向:http://plnkr.co/edit/aeSjmn?p=preview

下面是一些示例代码,可能会为你工作:

angular.module('ow', []). 
config(['$routeProvider', function($routeProvider) { 
$routeProvider. 
    when('/:placeId', {templateUrl: 'partials/menu.html', controller: MenuCtrl}). 
    when('/menu/:itemId', {templateUrl: 'partials/menu-details.html', controller: MenuItemCtrl}). 
    when('/look/refill', {templateUrl: 'partials/refill.html', controller: RefillCtrl}). 
    when('/look/orderCart', {templateUrl: 'partials/orderCart.html', controller: OrderCartCtrl}). 
    when('/lang/:lang', {templateUrl: 'partials/menu.html', controller: LangCtrl}). 
    when('/waiter/:redirect', {template: '', controller: function ($scope, $routeParams, $location) { 
     function WaiterCtrl($routeParams, $location, sharedData, $http, $route) { 
     $http.get(config.urls.ajaxWaiter + "{\"p\":\"" + sharedData.getOrderCart().orderPlace + "\"}").success(function(dataDetails) { 
      if ($routeParams.redirect == "menu") 
       $location.path("/"); 
      else 
       $location.path("/" + $routeParams.redirect); 
     }) 
    }}). 
    otherwise({redirectTo: '/0'}); 
}]; 
+0

感谢现在尝试 – Simcha 2013-05-01 18:40:30