从工厂获取数据

时间:2014-10-03 13:04:26

标签: angularjs angularjs-factory

我想要实现的目标:

  1. 将参数 specId 从控制器传递到工厂
  2. 在工厂中:执行$ http.get以获取JSON数据
  3. 将JSON数据返回给控制器
  4. 通过将信息分配给$ scope.formData
  5. 来显示信息

    我尝试了很多不同的方法,但它只返回 undefined 。在我创建工厂之前,我直接在控制器中执行$ http.get而没有任何问题,但现在我正在尝试以更好的方式构建应用程序。

    工厂:

    app.factory("dataFactory", function($http) {
        var factory = {};
    
        factory.getSpec = function(specId) {
            return $http.get('getSpec.aspx?specId=' + specId)
        };
    
        return factory;
    });
    

    控制器

    app.controller('EditSpecController', function ($scope, $stateParams, $http, dataFactory) {
        $scope.specId = $stateParams.specId;
        $scope.formData = [];
    
        if($scope.specId) { //If EDIT MODE
            dataFactory.getSpec($scope.specId).then(function(response) {
                $scope.formData = response.data;
                $scope.use_unit = response.data.use_unit;
            });
        }
    

1 个答案:

答案 0 :(得分:4)

正如你注意到$ http已经回复了承诺,所以你应该做更像这样的事情

factory.getSpec = function(specId) {
    return $http.get('getSpec.aspx' + specId)
};

然后在控制器中

dataFactory.getSpec().then(function(response) {
  $scope.formData = response.data;
});