角度UI路由器错误的模板和控制器

时间:2016-07-23 23:20:27

标签: angularjs angular-ui-router

我有一个奇怪的问题,我使用ng-click$state.go()状态,并获取正确的网址,但错误的模板和控制器。

这些是我的状态:

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");
    };

当我触发该功能时,我会将网址更改为http://example.com/messages/compose/a/message,但我会获得templateUrl状态的controllermessage

为什么?另一个状态是从类似的(ng-click派生的)函数触发而且效果很好。

1 个答案:

答案 0 :(得分:1)

您尝试访问的网址与您实际要访问的网址相匹配。

ui-router如何知道"撰写"不是你想要的字段:" a"不是你想要的场地,而是"消息"不是你想要的消息ID吗?

将更具体的状态定义移到带有URL参数的状态定义之上。