【问题标题】:AngularJs - changing from ngRoute to ui-router throwing Error: [$injector:unpr]AngularJs - 从 ngRoute 更改为 ui-router 抛出错误:[$injector:unpr]
【发布时间】:2015-10-29 17:47:07
【问题描述】:

我将应用程序中的路由从 ngRoute 更改为 ui-router,出现两个错误:

  1. 语法错误:意外字符串
  2. 未捕获的错误:[$injector:unpr]

config.route.js:

(function () {
  var app = angular.module('app');

  //Collect the routes
  app.constant('routes', getRoutes());    

  app.config(['$stateProvider', '$urlRouterProvider', 'routes', routeConfigurator]);
  function routeConfigurator('$stateProvider', '$urlRouterProvider', routes) {
    routes.forEach(function (r) {
      $stateProvider.state(r.url, r.config);
    });
    $urlRouterProvider.otherwise('/');
  }

  //Define the routes
  function getRoutes() {
    return [
      {
        url: '/',
        config: {
          templateUrl: 'app/components/dashboard/test/dashboard.html',
          title: 'dashboard',
          settings: {
            nav: 1,
            content: '<i class="fa fa-dashboard"></i> Dashboard'
          }
        }
      }, {
        url: '/admin',
        config: {
          title: 'admin',
          templateUrl: 'app/components/admin/admin.html',
          settings: {
            nav: 2,
            content: '<i class="fa fa-lock"></i> Admin'
          }
        }
      }
    ];
  }
})();

以前它如下并且工作正常:

app.config(['$routeProvider', 'routes', routeConfigurator]);
  function routeConfigurator($routeProvider, routes) {
    routes.forEach(function (r) {
      $routeProvider.when(r.url, r.config);
    });
    $routeProvider.otherwise({ redirectTo: '/' });
  }

在 app.js 中正确引用了 ui-router 模块,angular-ui-router.min.js 文件在 index.html 加载时成功加载。我究竟做错了什么 ?请帮忙!

【问题讨论】:

    标签: javascript angularjs angular-ui-router ngroute


    【解决方案1】:
    function routeConfigurator('$stateProvider', '$urlRouterProvider', routes)
    

    应该是

    function routeConfigurator($stateProvider, $urlRouterProvider, routes)
    

    这就是您收到Unexpected string 错误的原因。

    第二个错误是第一个错误的结果。

    【讨论】:

    • 现在抛出:错误:[$injector:unpr]errors.angularjs.org/1.4.7/$injector/…data-ng-include="'/app/common/layouts/left-nav.html'" class="ng-范围" data-ng-animate="1">idebar
    • 这已经是另一个错误了。似乎您在组件中忘记了 ngRoute$routeProvider 的提供程序。
    • 我不是这个意思。看来您正试图在某处注入$routeProvider。您不应该拥有它,因为您想删除 ngRoute
    • 搜索您的$route* 注射。例如。 $route, $routeParams, $routeProvider.
    • 任何地方都没有 $routeProvider 注入,但很少有 $route 注入。需要将它们更改为 $urlRouterProvider 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多