AngularJS-在服务中使用setter和getter来存储变量.有可能吗



如果我运行下面的代码,服务中存在的一个名为语言的变量是否可以设置并从各种控制器中获取?

app.service('serviceName', function() {
       var language;
       this.getLanguage = function()
       {
        return language;
       }
       this.setLanguage = function(lan)
       {
      language = lan;
       }
    });

控制器1:

serviceName.setLanguage('english');

控制器2:

$scope.lan = serviceName.getLanguage();

此外,如果这是不可取的,那么在可以通过不同控制器访问的服务中保留变量的更好方法是什么?

您还可以将所有内容组合在一个方法中:

app.service('serviceName', function () {
    var _language;
    this.language = function(value){
        if(value){
            _language = value;
        } else {
            return _language;
        }
    };
});

您的情况非常简单,因此您甚至可以直接公开变量:

app.service('serviceName', function () {
    this.language = null;
});

最新更新