Неправильный шаблон и контроллер Angular UI Router

0

У меня есть странная проблема, когда я использую 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 производной) функции и отлично работает.

Теги:
angular-ui-router

1 ответ

1
Лучший ответ

URL-адрес, который вы пытаетесь найти, совпадает с адресом, который вы на самом деле собираетесь делать.

Как узнал бы u-router, что "compose" не подходит для: поля, которое вы хотите, "a" - это не поле fro: "message" - это не идентификатор messageID, который вы хотите?

Переместите более конкретное определение состояния над параметром URL.

  • 0
    Имеет смысл, я думаю, я думал, что это работает, сопоставляя состояния, а не URL, но теперь я понимаю, почему это не так.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню