簡體   English   中英

AngularJS將工廠中的值綁定到控制器

[英]AngularJS bind a value in a factory to a controller

我試圖通過工廠鏈接兩個控制器。 我想在一個控制器中為工廠上的值myFactoryVar設置一個指針,以便當工廠中的值更改時, controllerVar中的值controllerVar也會更改。 我已經閱讀了這篇文章,並且喜歡它的一些人AngularJS:綁定到服務屬性的正確方法,但是我似乎無法使其與我的代碼一起使用。 也許是格式? 也許我綁定到沒有意義的原始類型。 到目前為止,這就是我所知道的,是否知道如何使其按預期工作?

控制器1:

;(function() {
    'use strict';

    angular
        .module('myapp')
        .controller('MyCtrl1', MyCtrl1);

    function MyCtrl1(myTracker) {

        var vm = this;

        angular.extend(vm, {
            controllerVar: myTracker.myFactoryVar,
            myTrackerVarIncrement: myTrackerVarIncrement

        });

        function myTrackerVarIncrement() {
            myTracker.myFactoryVarIncrement();
            /* should log the same value as myFactoryVar but doesn't */
            console.log(vm.controllerVar);
        }
    }
})();

控制器2:

;(function() {
    'use strict';

    angular
        .module('myapp')
        .controller('MyCtrl2', MyCtrl2);

    function MyCtrl2(myTracker) {
        var vm = this;

        angular.extend(vm, {
            myTrackerVarIncrement: myTrackerVarIncrement
        });


        function myTrackerVarIncrement() {
            /* I want to be able to increment the value in the factory, */
            /* and by means of that, the value in the other controller too */
            myTracker.myFactoryVarIncrement();
        }

    }
})();

廠:

;(function() {
    'use strict';

    angular
        .module('myapp')
        .factory('myTracker', myTracker);

    function myTracker() {

        var factory = {
            myFactoryVar: 1,
            myFactoryVarIncrement: myFactoryVarIncrement
        };

        return factory;

        function myFactoryVarIncrement() {
            factory.myFactoryVar += 1;
        }

    }
})();

也許我綁定到沒有意義的原始類型。

myFactoryVar是對象的屬性。 共享作為屬性的對象的引用。

;(function() {
    'use strict';

    angular
        .module('myapp')
        .controller('MyCtrl1', MyCtrl1);

    function MyCtrl1(myTracker) {

        var vm = this;

        angular.extend(vm, {
            //controllerVar: myTracker.myFactoryVar,
            controllerRef: myTracker,
            myTrackerVarIncrement: myTrackerVarIncrement

        });

        function myTrackerVarIncrement() {
            myTracker.myFactoryVarIncrement();
            /* should log the same value as myFactoryVar but doesn't */
            //console.log(vm.controllerVar);
            console.log(vm.controllerRef.myFactoryVar);
        }
    }
})();

綁定到引用以共享內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM