Angularjs UI路由器显示无错误的白色页面

Angularjs UI路由器显示无错误的白色页面,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我正在用UI路由器做一个应用,但我一辈子都不明白为什么页面是空白的。没有显示任何模板URL。这是我的建议 layout.html <div ui-view="form"></div> sdagas <div ui-view="results"></div> 结果 结果 app.config(function($stateProvider, $urlRouterProvider) { $stateProvider.state("index",

我正在用UI路由器做一个应用,但我一辈子都不明白为什么页面是空白的。没有显示任何模板URL。这是我的建议

layout.html

<div ui-view="form"></div>
sdagas
<div ui-view="results"></div>
结果

结果

app.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider.state("index", {
    url: "/",
    abstract: true,
    templateUrl: 'layout.html',
    controller: 'MainController',
    controllerAs: 'main'
  })
  .state('index.layout', {
    abstract: true,
    url: 'layout',
    views: {
      'form' : {
        templateUrl: 'form.html'
      },
      'results': {}
    }
  })
  .state('index.layout.results', {
    url: '/results',
    views: {
      'results@layout': {
        templateUrl:  'results.html'
      }
    }
  });

  $urlRouterProvider.otherwise('/');
});

app.controller('MainController', function($state) {
  console.log($state);
  console.log('hello');
});
从ui路由器wiki:

抽象状态可以有子状态,但不能被激活 它本身“抽象”状态只是一种不可复制的状态 过渡到。当其中一个 子体被激活

您使根状态
抽象:true
无法转换

更新:

ui sref=“/”
应包含状态名称,而不是
url
路径本身。如果确实要使用url路径,则应使用
href=“/”

更新:

您的html中也缺少了
ng app=“app”


首先,您的plunker中没有声明任何
ng应用程序。。你的html标签上应该有
ng app=“app”

其次,就像@Bilal所说的,你不能在你想要转换到的状态上有
abstract:true

此外,您的
ui sref
应指向以下状态:

<a class="brand" ui-sref="index">home</a> 
|
<a class="brand" ui-sref="index.layout">ui-router</a>

我在这里工作

我们调用状态结果的方式是:

ui-sref 
<a class="brand" ui-sref="index.layout.results">
href
<a class="brand" href="#/layout/results">
哪个会启动应用程序

另外,因为“/”是抽象的,所以我使用了另一个设置来进入非抽象状态

$urlRouterProvider.when('/', '/layout/results');
$urlRouterProvider.otherwise('/');
最后(但几乎是最重要的),这是更新的超级子状态,它的目标不是布局中的命名视图,而是索引状态中的命名视图

.state('index.layout.results', {
  url: '/results',
  views: {
    // wrong
    //'results@layout': {
    // this target is in the super parent
    'results@index': {
      templateUrl: 'results.html'
    }
  }
});

检查它

我们需要查看HTML结构。这通常会导致视图在其各种模板中的布局方式。@tuckerjt07在“我的本地”中看起来是:不,实际的HTML文件及其内容。你能把它们作为代码发布到这里吗?@tuckerjt07 html文件只是文本。反正我已经贴了。它们也在plunkr中。请尝试从app.js视图名称的结果中删除@layout。您正在尝试单独调用index.layout吗?至于Plunkr,它们很棒,但对于我们移动设备来说,这是无用的。他们没有响应性的布局。更改我刚才提到的
ui-sref
bug。
$urlRouterProvider.when('/', '/layout/results');
$urlRouterProvider.otherwise('/');
.state('index.layout.results', {
  url: '/results',
  views: {
    // wrong
    //'results@layout': {
    // this target is in the super parent
    'results@index': {
      templateUrl: 'results.html'
    }
  }
});