angular-ui-router error - 错误:when()

时间:2016-02-16 08:04:46

标签: angularjs angular-ui-router

我正在使用angular 1.5和angular-ui-router版本0.2.18

我的app.js文件如下所示:

import angular from 'angular';
import uiRouter from 'angular-ui-router';
import 'angular-ui-bootstrap';
import './components/logIn/logIn';
import './components/home/home';

    angular.module('app', ['ui.bootstrap', 'app.components', uiRouter])
      .controller('mainCtrl', function() {
      })
      .config(['$stateProvider', '$urlRouterProvider', '$urlMatcherFactoryProvider', function($stateProvider,   $urlRouterProvider,   $urlMatcherFactoryProvider){
        $urlRouterProvider
          .when('/home', {
            template: '<home></home>'
          })
          .otherwise({
            redirectTo: '/home'
          });
      }]);

我收到以下错误:

  

未捕获错误:[$ injector:modulerr]无法实例化模块应用   由于:错误:when()中的'handler'无效       在$ UrlRouterProvider.when(eval at(http://localhost:8080/app.bundle.js:511:2),:1916:13)       在eval(eval at(http://localhost:8080/app.bundle.js:493:2),:20:22)       at Object.invoke(eval at(http://localhost:8080/app.bundle.js:505:2),:4604:19)       at runInvokeQueue(eval at(http://localhost:8080/app.bundle.js:505:2),:4497:35)       在eval(eval at(http://localhost:8080/app.bundle.js:505:2),:4506:11)       at forEach(eval at(http://localhost:8080/app.bundle.js:505:2),:321:20)       在loadModules(eval at(http://localhost:8080/app.bundle.js:505:2),:4487:5)       在createInjector(eval at(http://localhost:8080/app.bundle.js:505:2),:4409:19)       在doBootstrap(eval at(http://localhost:8080/app.bundle.js:505:2),:1691:20)

我认为这是template属性。是不是可以像这样设置模板?

1 个答案:

答案 0 :(得分:4)

我认为您将urlRouterProviderrouteProvider混为一谈。

后者用于定义路线(以及它们之间的模板)。 当URL没有匹配时(或者作为字符串或函数),您可以使用第一个重定向。您使用的otherwise也属于$routeProvider

所以只需切换,你应该好好去:

$routeProvider.when('/home', {
    template: '<home></home>'
});

// or $urlRouterProvider.otherwise('/home');
$routeProvider.otherwise({ redirectTo: '/home' });