angularjs使json成为数组并在工厂中使用

时间:2018-03-07 15:30:46

标签: angularjs angularjs-factory

这是我现在使用的工厂,我得到2个json对象并尝试做一个数组然后我不能在textreplacer中使用它。

app.factory('myFactory', function ($http) {
  var service = {}
  var array =  [];
  var obj = [];


  service.getText = function () {
    return text =  $http.get('api/json_text').then(function(res){
        return res.data;
    });
  }
  service.getShortcuts = function () {
    return shortcuts = $http.get('api/json_shortcuts').then(function(res){
        return res.data;
    });
  }
  service.merchJson = function () {
    service.getText().then(function(text) {
      service.getShortcuts().then(function(shortcuts) {
        angular.forEach(text, function(value, key) {
          if(!angular.isUndefined(shortcuts[value])){
            array_value = shortcuts[value];
            obj[key] = array_value;
            array.push(obj[key]);
          }else{
            array_value = text[key].toString();
            obj[key] = array_value;
            array.push(obj[key]);
          }
        });

      });
    });
    return array;
  }
  service.textReplacer = function () {
      var array = service.merchJson();
      angular.forEach(array, function(value, key) {

      });
      console.log(array);

  }
  return service;
})

我做错了什么或者是错误,因为我可以在console.log(数组)中看到它 没有任何问题。

1 个答案:

答案 0 :(得分:0)

试试这个

service.merchJson = function () {
    var result;
    return service.getText().then(function (text) {
            result = text;
            return service.getShortcuts();
        })
        .then(function (shortcuts) {
            angular.forEach(result, function (value, key) {
                if (!angular.isUndefined(shortcuts[value])) {
                    array_value = shortcuts[value];
                    obj[key] = array_value;
                    array.push(obj[key]);
                } else {
                    array_value = result[key].toString();
                    obj[key] = array_value;
                    array.push(obj[key]);
                }
            });
            return array;
        });
}


service.textReplacer = function () {
    service.merchJson().then(function (array ) {
        angular.forEach(array, function (value, key) {});
        console.log(array);
    });
}