2013-05-01 83 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