У меня есть странная проблема, когда я использую ng-click
для $state.go()
для состояния и получаю правильный URL-адрес, но не тот шаблон и контроллер.
Это мои состояния:
app.config(function($stateProvider, $urlRouterProvider){
$urlRouterProvider.otherwise("/messages");
$stateProvider.state('message', {
url: "/messages/:to/:fro/:messageID",
templateUrl: 'message.html',
controller: 'MessageCtrl'
}).state('compose', {
url: "/messages/compose/a/message",
templateUrl: 'compose.html',
controller: 'ComposeCtrl'
});
});
Это функция, вызванная моим ng-click
и на самом деле я получаю консольный журнал, поэтому знаю, что стрелял правильный.
$scope.composeMe = function(){
console.log("You want to compose a message!");
$state.go("compose");
};
Когда я запускаю эту функцию, я получаю URL-адрес, чтобы перейти на http://example.com/messages/compose/a/message
но я получаю templateUrl
и controller
состояния message
.
Почему это? Другое состояние запускается из аналогичной (ng-click
производной) функции и отлично работает.
URL-адрес, который вы пытаетесь найти, совпадает с адресом, который вы на самом деле собираетесь делать.
Как узнал бы u-router, что "compose" не подходит для: поля, которое вы хотите, "a" - это не поле fro: "message" - это не идентификатор messageID, который вы хотите?
Переместите более конкретное определение состояния над параметром URL.