如何更正ui-router多个命名视图的使用

时间:2014-10-06 13:19:27

标签: angularjs angular-ui-router

我尝试设置一个没有父模板但使用angular ui-router包含多个命名视图的页面。

A plunkr is here

有一个简单的html设置:

<body>
  <div ng-app="thing">
    <h1>Multiple Views</h1>
    <div ui-view="oneThing"></div>
    <div ui-view="twoThing"></div>
    <div ui-view="threeThing"></div>

    <script id="one_thing.html" type="text/ng-template">
      <p>one: {{text}}</p>
    </script>
    <script id="two_thing.html" type="text/ng-template">
      <p>two: {{text}}</p>
    </script>    
    <script id="three_thing.html" type="text/ng-template">
      <p>three: {{text}}</p>
    </script>
  </div>
  </body>

我希望这意味着我有三个视图和三个模板,这些&#39;&#39;应用程序可以看到

然后JS设置是:

'use strict';

var thing = angular.module("thing", ['ui.router']);

thing.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider
    .state('things', {
        url: '/things', 
        views: {
          'oneThing': {
            templateUrl:'one_thing.html',
            controller: 'oneCtrl'
          },
          'twoThing': {
            templateUrl:'two_thing.html',
            controller: 'twoCtrl'
          },
          'threeThing': {
            templateUrl:'three_thing.html',
            controller: 'threeCtrl'
          }
      }
  });
  $urlRouterProvider.when('/', 'things');
});

thing.controller('oneCtrl', function($scope) {
  $scope.text = 'boom';
});

thing.controller('twoCtrl', function($scope) {
  $scope.text = 'bang';
});

thing.controller('threeCtrl', function($scope) {
  $scope.text = 'wallop';
});

我认为这意味着总是负载事物&#39;作为路径并在该状态内加载三个视图,每个视图指向不同的模板和控制器。但相反,我得到一个空白页......

我是否误解了它是如何工作的或如何写它(或者更糟糕的是,两者都是!!)?

1 个答案:

答案 0 :(得分:1)

默认网址为而不是/

因此$urlRouterProvider.when('/', 'things');未被触发。

更改为

$urlRouterProvider.when('', 'things');

你的傻瓜工作。