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

Вы не сможете поместить динамический код в маршрутизацию. Это связано с тем, что маршрутизация происходит во время фазы Config, которая выполняется до того, как 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

Смежные вопросы