AngularJS - Shared state between controllers?

后端 未结 2 744
忘了有多久
忘了有多久 2021-01-11 16:11

I know there are other similar questions on how to pass data between Angular controllers.

What I wonder is how to deal with this in a view..

Lets say I have

2条回答
  •  耶瑟儿~
    2021-01-11 16:54

    To further specify the answer @GoloRoden gave, this is an example of how you can share state values across all controllers taking the service as a dependency.

    App.factory('formState', formState);
    
    function formState() {        
    
        var state = {};
    
        var builder = "nope";
        var search = "nope";
    
        state.builder = function () {
            return builder;
        };
    
        state.search = function () {
            return search;
        };
    
        state.set = {
            'builder': function (val) {
                builder = val;
            },
            'search': function (val) {
                search = val;
            }
        };
    
        return {
            getStateManager: function () {
                return state;
            }
        };
    }
    
    App.controller('builderCtrl', builderCtrl);
    
    builderCtrl.$inject = ['formState']
    function builderCtrl(formState) {
        var stateManager = formState.getStateManager();
    
        activate();
    
        function activate() {
            console.log("setting val in builder");
            stateManager.set.search("yeah, builder!");
    
            console.log("reading search in builder: " + stateManager.search());
            console.log("reading builder in builder: " + stateManager.builder());
        }
    }
    
    App.controller('searchCtrl', searchCtrl);
    
    searchCtrl.$inject = ['formState']
    function searchCtrl(formState) {
        var stateManager = formState.getStateManager();
    
        activate();
    
        function activate() {
            console.log("setting val in search");
            stateManager.set.search("yeah, search!");
    
            console.log("reading search in search: " + stateManager.search());
            console.log("reading builder in search: " + stateManager.builder());
        }
    }
    

提交回复
热议问题