在 app.config 中使用 resolve

using resolve in app.config

我在配置中使用 angularjs 的解析来加载我的控制器所需的一些值,然后再加载控制器。这是我用来测试逻辑的代码

(function () {

    "use strict";

    var app = angular.module("lab1App", ["ngRoute"]);

    app.config(["$routeProvider", function ($routeProvider) {
        $routeProvider.when("/", {
            templateUrl: "/views/view1.html"
        }).when("/view2", {
            templateUrl: "views/view2.html",
            controller: "SecondController",
            resolve: {
                name: ["DropdownService", function (dropDownSvc) {
                    return dropDownSvc.loadName(5);
                }]
            }
        }).otherwise({
            template: "Don't have any routes associated with this"
        });
    }]);

    app.controller("MainController", [ "$scope", function ($scope) {

    }]);

    app.controller("SecondController", [ "$scope", "name", function ($scope, name) {
        console.log(name);
    }]);

    app.constant("API", { url: "http://localhost:55339/api/dropDowns" });

    app.factory("DropdownService", ["API", "$http", "$q", function (api, $http, $q) {

        return {
            loadName: function (id) {
                console.log("im here");
                var deferred = $q.defer();

                $http.get(api.url + "/" + id)
                    .success(function (result) {
                        deferred.resolve(result);
                    }).error(function (err, status) {
                        deferred.reject("Error: " + err + ", Status: " + status);
                    });

                return deferred.promise;
            }
        };
    }]);

})();

现在当我 运行 代码时出现此错误:

Error: [$injector:unpr] Unknown provider: nameProvider <- name <- SecondController

虽然我在控制器中获取了 name 变量,但仍会抛出错误。

有人能告诉我我做错了什么吗?

我将冒险猜测在某处,可能在 view2.html 内,您有

ng-controller="SecondController"

第二次调用 "SecondController" 控制器会引发 "unknown provider" 错误,因为它没有 resolve-d name.

要修复,删除 ng-controller 指令。