如何编辑工厂的角度返回数据

时间:2016-01-20 10:51:00

标签: angularjs angularjs-factory

我正在寻找一种改变工厂回报的方法。 例如,我有一个角度项目,其中包含:一个控制器和一个服务(工厂)。

控制器为两个对象(" item"和" someItem")。 该服务公开了两种方法(" getIem()"和" getSomeItem()")。

控制器中的对象从服务接收数据。

我想要方法" getItem()"将我的json文件中存在的数据作为对象返回,并使用我的方法" getSomeItem()"返回相对于方法参数的特定项。

(在#34;项目中设置" someItem"对象"对象是一个解决方案,但我想在" getSomeItem()&#中做到这一点34;方法,也许我误解了诺言的工作方式,但我想我可以编辑工厂中方法的返回,那是对工厂的不良使用吗?)

the plunker在这里:https://plnkr.co/edit/YGNy92ewINRSAILs83PS?p=preview

var controllers = angular.module('controllers',[]);
var services = angular.module('services',[]);
var app = angular.module('app',['controllers','services']);

controllers.controller('mainController',['myFactory',function(myFactory){

  var vm = this;
  //////////////

  vm.item = {};
  vm.someItem = {};
  activate();

  function activate(){

    myFactory.getItem().then(function(data){
      vm.item = data;
      return vm.item;
    });

    myFactory.getSomeItem(0).then(function(data){
      vm.someItem = data;
      return vm.someItem;
    });
  }

}]);

services.factory('myFactory',['$http', function($http){

  var getItem = function(){
    return $http.get('myData.json')
    .success(function(data){return data})
    .error(function(data){throw new Error(data + status + headers + config)})
  };

  var getSomeItem = function(item){
    return $http.get('myData.json')
    .success(function(data){
      //I try to return just a specific object 
      var oneObject = data.data.objet1[item]; 
      return oneObject})
    .error(function(data){throw new Error(data + status + headers + config)})
  };

  return{
    getItem : getItem,
    getSomeItem : getSomeItem
  }

}]);

1 个答案:

答案 0 :(得分:0)

问题在于您的.success.error,如果您将其更改为.then它应该有效:

.then(
    function(data){
        //I try to return just a specific object 
        var oneObject = data.data.objet1[item]; 
        return oneObject
    },
    function(data){
        throw new Error(data + status + headers + config)
    }
 );

更新了plunkr:https://plnkr.co/edit/19naxd7wWr9JNuQkbViS?p=preview

此处的解释:Angular HttpPromise: difference between `success`/`error` methods and `then`'s arguments