无法在角度控制器中共享变量

时间:2015-04-22 10:37:17

标签: angularjs

我是棱角分明的新手。我在两个Html页面中有两个ng-controller。我想将数据从一个控制器共享到另一个控制器。 这是我创建的服务:

int a[3] = { 1, 2, 3 };    // OK at top level

这是controller1:

app.service('sharedProperties', function() {
    var stringValue = 'test string value';
    var objectValue = {
        data: 'test object value'
    };

    return {
        getString: function() {
            return stringValue;
        },
        setString: function(value) {
            stringValue = value;
        },
        getObject: function() {
            return objectValue;
        }
    }
});

这是controller2:

 app.controller('FirstCtrl',function($scope,sharedProperties){
         sharedProperties.setString("Hi");
  });

而不是获取包含字符串'Hi'的警报,而不是'测试字符串值'。

NB。我在两个HTML文件中使用FirstCtrl和SeccondCtrl。在从FristCtrl设置字符串后,我重定向到第二个HTML文件。

3 个答案:

答案 0 :(得分:1)

我已创建jsfiddle,但效果很好。

app.controller('FirstCtrl',function($scope,sharedProperties){
    $scope.set =  function(){
        sharedProperties.setString("Hi");
    }
  });

app.controller('SeccondCtrl',function($scope,sharedProperties){
    $scope.get = function(){
        window.alert(sharedProperties.getString());
    }

});

答案 1 :(得分:0)

我不明白为什么你在返回时设置方法,为什么不在服务上尝试这种方法?无论哪种方式,您都可以将服务设置为主要js中$ scope($ scope.sharedProperties)下的函数,使其成为全局"可用的。

app.service('sharedProperties', function() {
    var stringValue = 'test string value';
    var objectValue = {
        data: 'test object value'
    };
        this.getString: function() {
                return stringValue;
        };
    this.setString: function(value) {
            stringValue = value;
        };
    this.getObject: function() {
            return objectValue;
       };
    return {
        getString: getString,
        setString: setString,
        getObject: getObject
    }
});

答案 2 :(得分:0)

服务有此参考,您可以按照以下

编写服务方法
app.service('sharedProperties', function() {
        var stringValue = 'test string value';
        var objectValue = {
            data: 'test object value'
        };

       this.getString: function() {
                return stringValue;
            }
       this.setString: function(value) {
                stringValue = value;
            }
        this.getObject: function() {
                return objectValue;
            }

    });