AngularJS .value():未在Controller中获取Updated / Modified值

时间:2018-05-17 21:14:25

标签: javascript angularjs angularjs-routing

我在AngularJS App中使用了Value()模块。 我已经声明并修改了Value,但是我无法在Controller中检索修改后的或最新的值。

  • 流程如下:

    1. 第1步:使用.value初始化值("键":"值")
    2. 第2步:修改RUN块中的值。如果我在此STEP中执行console.log(),我将获得所需的输出。这意味着价值正在更新。
    3. 第3步:访问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: {}

    }

})();

知道出了什么问题吗?或者我是以错误的方式实施这个概念?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我正在以错误的方式实施价值模块概念。在我的实现方法中,Value不会通过Reference传递。因此,我没有得到修改或更新的价值。

为了通过参考传递价值并实现上述功能,请修改以下步骤:

第1步:

var errObj = {errorCollection: null};
.value("errorCollectionObject", errObj)

第2步:

errorCollectionObject.errorCollection = response.data;

第3步:

console.log(errorCollectionObject.errorCollection);

您将在步骤3中获得修改或更新的值。 希望它对某人有帮助。 :)