在Service.js中更改var值

时间:2016-02-02 00:40:37

标签: javascript html angularjs ionic-framework

我正在使用Ionic制作移动应用。我存储了“蓝色”作为初始值。现在我想改变服务中的价值。

.factory('repository', function() {
      var theme="button-calm";
      setTheme: function(input){
         theme=input; 
      },
      getTheme: function(){
         return theme;
     }

但我不知道为什么主题不能改变。

2 个答案:

答案 0 :(得分:3)

您工厂的语法似乎有点过时,请确保您的工厂返回一个javascript对象:

// remove certain classes and styles for devices less than 991px
$(document).ready(function(){
        $('#opt-pos-img-responsive > div').css('border','1px dotted blue');
        if($('#opt-pos-img-responsive > div').hasClass('.caption2')) // check whether it has the class and change img position
        {
            $('img-responsive').css('float','right !important');
        }
        else if($('#opt-pos-img-responsive > div').hasClass('.caption1'))
        {
            $('img-responsive').css('float','left !important');
        }
    }
});

接下来将工厂注入您的控制器

app.factory('repository', function() {
  var theme="button-calm";
  return {
    setTheme: function(input){
       theme = input; 
    },
    getTheme: function(){
       return theme;
    }
  }
});

然后在你的控制器中你可以设置/获取主题:

app.controller('SomeController', ['repository', function(repository) {
...

请参阅此plnkr以获取一个工作示例:http://plnkr.co/edit/T6OoL10QzCK6hoX1HZc8?p=preview

答案 1 :(得分:0)

请尝试使用此服务:

(function(){

service('repositoryService', function(){
    var service = {

        theme : "button-calm";

        getTheme : function(){
            return this.theme; 
        },

        setTheme : function(input){
            this.theme = input; 
        }
    };

    return service; 
});

})();

显然,您需要在控制器中引用repositoryService,就像您需要引用repository一样。