我在AngularJS App中使用了Value()模块。 我已经声明并修改了Value,但是我无法在Controller中检索修改后的或最新的值。
流程如下:
我已在下面的守则中提到过步骤。
app.module.js
(function () {
"use strict";
angular
.module("app", [
"app.authentication"
])
//STEP 1: Initialize the Value.
.value("errorCollectionObject", {})
.run(getErrorCollection)
function getErrorCollection($rootScope, $location, $http, errorCollectionObject) {
$rootScope.$on('$routeChangeStart', function (event, next, current) {
$http.get("../app/core/error-collection.json")
.then(function (response) {
//STEP 2: Modify/Update the Value.
errorCollectionObject = response.data;
});
});
}
})();
login.controller.js
(function () {
"use strict";
angular
.module("app.authentication")
.controller("LoginController", LoginController)
LoginController.$inject = ["errorCollectionObject"];
function LoginController(errorCollectionObject) {
var vm = this;
//STEP 3: Use the Modified or Latest Value
//But instead of getting the Modified value, I am getting the null Object {} that I initialized in STEP 1.
console.log(errorCollectionObject);
//Output is: {}
}
})();
知道出了什么问题吗?或者我是以错误的方式实施这个概念?任何帮助将不胜感激。
答案 0 :(得分:0)
我正在以错误的方式实施价值模块概念。在我的实现方法中,Value不会通过Reference传递。因此,我没有得到修改或更新的价值。
为了通过参考传递价值并实现上述功能,请修改以下步骤:
第1步:
var errObj = {errorCollection: null};
.value("errorCollectionObject", errObj)
第2步:
errorCollectionObject.errorCollection = response.data;
第3步:
console.log(errorCollectionObject.errorCollection);
您将在步骤3中获得修改或更新的值。 希望它对某人有帮助。 :)