UI 路由器参数 URL 不起作用,只是重定向到 /

UI Router parameter URL not working just redirecting to /

本文关键字:重定向 路由器 参数 URL 不起作用 UI      更新时间:2023-09-26

我正在尝试让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时,我被重定向到/ (如果找不到页面,则重定向说转到/

很高兴看到状态层次结构的完整情况。因为这个:

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

可能与父状态有关,(我希望)父状态已经定义了/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

当您运行此代码时,您应该在控制台上看到如下错误:

无法读取未定义的属性"代理"

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

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