2015-08-27 2 views
0

Я хотел бы использовать конкретный шаблон, если параметр маршрута - 1, а другой шаблон, если это что-то еще.Использование определенного шаблона на основе определенного параметра маршрута

Однако если я жёстко 1, я теряю связывание:

when("/edit/person/1", { 

    }, 
    templateUrl: 'partials/proband.html', 
    controller: "PersonCtrl" 
}). 
when("/edit/person/:person_id", { 
    }, 
    templateUrl: 'partials/person-form.html', 
    controller: "PersonCtrl" 
}). 

Что такое лучший способ справиться с этим?

+1

Я могу только рекомендовать вам использовать ui-router, чтобы проверить этот документ, должен объяснить все, что вам нужно https://github.com/angular-ui/ui-router/wiki/URL-Routing – stackg91

ответ

1
when("/edit/person/:person_id", { 
}, 
templateUrl: 'partials/person-form.html', 
controller: "PersonCtrl" 

}).

Используйте этот маршрут и укажите инструкцию "if" в контроллере. Например, вы можете:

if ($stateParams.person_id === 1) { 
    //Do something 
} 

Это в основном это, или вы можете указать анонимный контроллер состояния. Кроме того, возьмите добычу в документации https://github.com/angular-ui/ui-router, это даст вам неплохой взгляд на параметры. Надеюсь, это помогло.

+0

Спасибо, я в конечном итоге использовал один шаблон и использование ng-show для конкретного ввода, который мне нужен только для редактирования/person/1 – jparry

0

Я не уверен, что это лучший способ, но вы можете решить проблему, слушая $routeChangeStart слушателя на $rootScope в run блоке:

.run(function($rootScope) { 
    $rootScope.$on('$routeChangeStart', function (event, next) { 
    // If person_id is 1 
    var person_id_1 = (next.originalPath === "/edit/person/:person_id") && 
         next.params.person_id === '1'; 

    if (person_id_1) { 
     // Set templateUrl 
     next.templateUrl = 'partials/proband.html'; 
    } 
    }); 
})