不同的状态不显示模板内容

时间:2015-10-01 14:23:19

标签: angularjs nested angular-ui-router state

我有一个基本的Index.html文件,其结构如下:

  $stateProvider
    .state('login', {
        url: '/login',
        templateUrl: 'partials/login-area.html',
        controller: 'LoginController',
      });

当我处于登录状态时,它运作良好:

$stateProvider
  .state('user', {
    url: '/:buildingName',
    controller: 'CurrentBuildingController',
    data: {
      access: ['user']
    }
  })
  .state('user.management', {
    url: '/management',
    templateUrl: '/views/management.html',
    controller: 'ManagementController'
  })

但是,当我路由到user.management状态时,没有显示任何内容(但Chrome正在加载模板,因此我可以访问范围,并且.html文件就在那里):< / p>

var request = WebRequest.Create(UriString);
request.Timeout = Timeout;
if (_disableProxy)
{
    request.Proxy = null;
}
if (request is HttpWebRequest)
{
    var response = (HttpWebResponse)request.GetResponse();
    responseStream = response.GetResponseStream();

}
if (request is FtpWebRequest)
{
    var response = (FtpWebResponse)request.GetResponse();
    responseStream = response.GetResponseStream();
}
else if (request is FileWebRequest)
{
    var response = (FileWebResponse)request.GetResponse();
    responseStream = response.GetResponseStream();
}
  

有人能解释我为什么吗?

1 个答案:

答案 0 :(得分:2)

父状态只需为其子必须具有目标(除非我们使用绝对命名来定位某些超级父级,但这是另一种方法)

.state('user', {
    url: '/:buildingName',
    template: "<div ui-view></div>",
    controller: 'CurrentBuildingController',
    data: {
      access: ['user']
    }
  })

看到我们现在有 template: "<div ui-view></div>", ,它将作为任何子州的观看目标 'user.xxx'

检查:

EXTEND - 让孩子定位index.html

我们可以使用绝对命名,然后将child直接注入index.html。有a working plunker (根据意图父级不会加载,它没有任何模板)

  .state('parent', {
      url: "/parent",
      //templateUrl: 'tpl.html',
  })
  .state('parent.child', { 
      url: "/child",
      views: {
        '@': {
          templateUrl: 'tpl.html',
          controller: 'ChildCtrl',
        }
      }
  })

检查以获取更多信息:

Angularjs ui-router not reaching child controller