【问题标题】:I can't get where that "Error: $injector:unpr Unknown Provider" is from我无法知道“错误:$injector:unpr Unknown Provider”的来源
【发布时间】:2015-08-26 00:57:03
【问题描述】:

如果我不注入控制器“getChildrenNumber”,一切正常,然后我从 $injector 收到错误。 我什至读过https://docs.angularjs.org/error/$injector/unpr,但这似乎不是其中一种情况

HTML (index.html):

<html class="no-js" ng-app="myApp" ng-strict-di>
.
.
.
<script src="jsLib/angular_v1.4.js" type="text/javascript"></script>
    <script src="jsLib/angular-ui-router.min.js" type="text/javascript"></script>
    <script src="jsLib/angular-ui-router-statehelper.min.js" type="text/javascript"></script>


    <script src="app.js" type="text/javascript"></script>
    <script src="routes.js" type="text/javascript"></script>

routes.js:

var config = ["$urlRouterProvider", "$stateProvider", "$locationProvider", function($urlRouterProvider, $stateProvider, $locationProvider){

$urlRouterProvider.otherwise("/multi");

$stateProvider
    .state("multi",{
        url: "/multi",
        views: {
            "": {
                templateUrl: "multipleView.htm",
                controller: "MainCTRL",
                controllerAs: "ctrl"
            },
            "viewA@multi": {
                templateUrl: "testingBlock.htm",
                controller: "MainCTRL",
                controllerAs: "ctrl"
            },
            "viewB@multi": {
                templateUrl: "app/templates/login.htm",
                controller: ["$scope", "getChildrenNumber", function($scope, getChildrenNumber){
                    $scope.nameApp = "nameAppChanged";
                    $scope.children = getChildrenNumber + " Miao";
                }]
            }
        },
        resolve: {
            getChildrenNumber: ["$http", function($http){
                return "Some response from an API";
            }]
        }
    });
}];



angular
    .module("myApp")
    .config(config);

app.js:

angular
    .module("myApp", ["ui.router"])
    .controller("MainCTRL", ["$scope", "getChildrenNumber", function($scope, getChildrenNumber){
        this.nameApp = "myApp";
        $scope.children = getChildrenNumber;
    }]);

【问题讨论】:

    标签: angularjs angular-ui-router angularjs-injector


    【解决方案1】:

    你以错误的方式实现它..

    首先,在 routes.js 中

    $stateProvider
        .state("multi",{
            url: "/multi",
            views: {
               // Views Code here //
            },
            resolve: {
                getChildrenNumber: getChildrenNumber
            }
        });
    }];
    

    那么你必须创建你的工厂:

    angular.module('myApp')
    .factory('children', ['$http', function ($http) {
      return {
        getChildrenNumber: getChildrenNumber
      };
    
      function getChildrenNumber() {
        return "Some response from an API";
      }
    }]);
    

    在此之后,您可以将其作为children 注入到您的控制器中

    【讨论】:

      猜你喜欢
      • 2016-11-12
      • 1970-01-01
      • 2015-07-14
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多