UI路由器参数URL无法正常重定向到/

时间:2016-04-27 21:26:48

标签: javascript angularjs angular-ui-router angular-ui

我正在尝试让UI路由器有详细的消息视图,这里是代码:

  .state('app.messages.detail', {
        url: 'messages/{id}',
        templateUrl: 'templates/views/message.html',
        controller: function($scope, sharedProperties, $stateParams) {
          console.log($stateParams);
          messages = sharedProperties.getMessages();
          $scope.message = messsages.name[$stateParams.id];
    }
  })

这是消息数组:

var messages = { 
  "Deputy": 
  {
    "name": "Deputy", 
    "message": ["Test", "Whey", "I See you!"]
  },
  "SOCO": 
  {
    "name": "SOCO",
    "message": ["Second Test", "Does this actually work?"]
  }
};

但是当我转到/#/messages/Deputy时,我会被重定向到 / (如果找不到页面,会有重定向说明转到/

2 个答案:

答案 0 :(得分:1)

很高兴看到状态层次结构的完整图片。因为:

  

但是,当我转到/#/messages/Deputy时,我会被重定向到 / (有一个重定向说明去 / < / strong>如果页面 <)>

可能与父状态有关,我希望它已定义/messages

// parent
.state('app.messages', {
    url: '/messages',

// child should not repeat the parent's *url* part, it is already there
.state('app.messages.detail', {
    //url: 'messages/{id}',
    url: '/{id}',

因为没有这种调整(使用加倍/messages定义),我们需要像这样的网址

/#/messages/messages/Deputy

答案 1 :(得分:0)

运行此代码时,您应该在控制台上看到类似的错误:

无法阅读财产&#39;代理&#39;未定义的

我认为真正的消息定义应该是:

$scope.message = messsages[$stateParams.id];