2013-05-01 5 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가 응용 프로그램을 실행하기 전에 실행되는 Config 단계에서 라우팅이 수행되기 때문입니다.

당신이하려는 일을하는 가장 쉽고 깨끗한 방법은 단지 경로 정의에 인라인 컨트롤러가 있다고 생각합니다. 여기

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