【问题标题】:using resolve in app.config在 app.config 中使用解析
【发布时间】:2023-03-29 06:04:02
【问题描述】:

在加载控制器之前,我在配置中使用 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;
            }
        };
    }]);

})();

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

错误:[$injector:unpr] 未知提供者:nameProvider

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

谁能告诉我我做错了什么?

【问题讨论】:

  • 下面的答案是否解决了您的问题?
  • 否 - 我尝试将其从 view2.html 中删除,但仍然出现错误
  • 这个错误意味着你正在用ng-controller(或其他任何地方)实例化一个SecondController控制器除了路由配置。第二个实例没有可注入的name。这是您的有效代码:plnkr.co/edit/ADJyT4WtQpUR2LH9rvwg?p=preview

标签: angularjs app-config angular-promise resolve


【解决方案1】:

我冒险猜测一下,很可能在view2.html 内部,你有

ng-controller="SecondController"

"SecondController" 控制器的第二次调用引发了“未知提供者”错误,因为它没有 resolve-d name

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

【讨论】:

    猜你喜欢
    • 2018-08-14
    • 2011-02-17
    • 2012-10-23
    • 2023-03-24
    • 2013-05-25
    • 2017-05-07
    • 2017-01-29
    • 2011-05-31
    • 1970-01-01
    相关资源
    最近更新 更多