如何在AngularJS中的控制器内传递变量

如何在AngularJS中的控制器内传递变量,angularjs,Angularjs,嗨,我需要使用一个从一个控制器的结果范围到另一个控制器的变量。我可以通过使用嵌套控制器来实现这一点,但在我的例子中,我的控制器2不是控制器1的子级。我可以用下面的控制器实现我的输出,但我仍然想知道这是最好的实践,如果不是的话,我如何在不同的控制器之间传递变量 angular.module('test',[]) .factory('PassParameter', PassParameter) function PassParameter(){ var t

嗨,我需要使用一个从一个控制器的结果范围到另一个控制器的变量。我可以通过使用嵌套控制器来实现这一点,但在我的例子中,我的控制器2不是控制器1的子级。我可以用下面的控制器实现我的输出,但我仍然想知道这是最好的实践,如果不是的话,我如何在不同的控制器之间传递变量

 angular.module('test',[])
        .factory('PassParameter', PassParameter)
    function PassParameter(){
         var thisValue = {};
        return {
            getParameter: function () {
                return thisValue;
            },
            setParameter: function (setValue) {
                _.extend(thisValue, setValue);
            },
            removeParameter : function(value) {
                _.omit(thisValue, value);
            }
        };
    };

我将一个对象传递给setParameter函数,并从getParameter函数获取其值。

这是我在控制器之间传递信息的方式。 *请注意,我使用的是angular.copy,这样我就不会丢失引用,这样当obj被更改时,您就不需要再获取它了。仅适用于对象{}

angular.module('test').service('mySrv',
function () {
    var obj = {};

    this.getObj = function(){
        return obj;  
    };

    this.setObj = function(obj){
        obj = angular.copy(obj);
    };
});

我目前正在使用像您这样的setter/getter工厂,除了使用Localstorage在那里保存一些数据外,另一个选项是使用$rootScope,它在所有控制器中都可用,但我不建议仅对一些重要变量使用服务来做类似的事情。它们是可以注入控制器内部的函数,您可以将setter和gettere放入其中,这样就可以将变量注入到任何您想要的地方。是的,我可以使用angular.copy,但如果我尝试第二次传递变量,我将丢失第一个传递的obj。其中,在extend方法中,即使在我使用完该对象之后,我的obj仍然存储了它的值。我已编辑代码以删除已使用的“不再需要”值。但我还是想知道是否有更好的解决办法?