在 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
指令。
我在配置中使用 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
指令。