如何更新服务自己的变量中的值?

时间:2014-08-22 05:44:35

标签: angularjs

我有一个基本数据服务,它将用于多个控制器。在服务中,我有一些预定义的字段,我将通过$ http获得。

在获取$ http响应后,我目前无法更新该变量 - 我不断收到错误dropdownData is not defined。我知道这可能是非常基本的,所以请告诉我。

服务:

angular.module('core').service('FormService', ['$http', function($http) {

    this.dropdownData = {
        contactTimes: ['Anytime','Morning','Afternoon','Evening'],
        industries: {},
    };

    $http.get('/json').success(function(resp){
        dropdownData.industries = resp.industries; 
    });
}]);

3 个答案:

答案 0 :(得分:0)

捕获对this的引用并在回调中使用它

angular.module('core').service('FormService', ['$http', function($http) {
    var service = this;
    this.dropdownData = {
        contactTimes: ['Anytime','Morning','Afternoon','Evening'],
        industries: {},
    };

    $http.get('/json').success(function(resp){
        service.dropdownData.industries = resp.industries; 
    });
}]);

答案 1 :(得分:0)

尝试在变量中定义:

  angular.module('core').service('FormService', ['$http', function($http) {
var $this = this;
$this.dropdownData = {
    contactTimes: ['Anytime','Morning','Afternoon','Evening'],
    industries: {},
};

     $http.get('/json').success(function(resp){
    $this.dropdownData.industries = resp.industries; 
});

}]);

根据函数调用上下文重新定义。通过将 this 存储在变量中,您可以在闭包中重复使用它。

答案 2 :(得分:0)

也许使用var可以解决你的问题

var dropdownData = {
    contactTimes: ['Anytime','Morning','Afternoon','Evening'],
    industries: {},
};