【发布时间】: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