AngularJS:$ scope,工厂退货有问题

时间:2013-10-03 03:51:38

标签: javascript angularjs

我正在学习AngularJs。 我发现自己很喜欢它,但我坚持使用这个代码

我的控制器

$scope.getQuestionaires = function(){
var formdata = $scope.formdata;
var items = parseInt(formdata.items);
var num_letter = parseInt(formdata.num_letter);
var num_missing_letter = parseInt(formdata.num_missing_letter);

var send_data = {
    api_type: 'select',
    tb_name: 'tb_spelling',
    tb_fields: false,
    tb_where: false,
    tb_others: "LIMIT "+items
};

return factory.getRecords(send_data);
}

我的工厂

factory.getRecords = function(data) {
  return $http.post('models/model.php', {
     params: data
    }).then(function(response) {
    records = response.data;
    return records;
  });
};

情况:当我console.log($scope.getQuestionaires)时,它会返回

  

function(b,j){var   G = E()中,i =函数(d){尝试{g.resolve((B || C)(d))}赶上(E){A(e)中,g.reject(E)}},邻=函数(b){尝试{g.resolve((j ||   d)(B))}捕获(C){A(C),g.reject(C)}};˚Ff.push([I,O):h.then(I,O);返回?   g.promise} controllers.js:307 function(a){function b(a,c){var   d = e(); c?d.resolve(a):d.reject(a); return d.promise} function d(e,f){var   j = null;尝试{j =(a || c)()} catch(g){return b(g,!1)} return   j&& j.then?j.then(function(){return b(e,f)},function(a){return   b(a,!1)}):b(e,f)}返回this.then(function(a){return   d(a,!0)},function(a){return d(a,!1)})} controllers.js:307

     

[对象,对象,对象,对象]

问题:我的问题是我只想要对象数组,我该怎么做?我认为我的代码有很多改进......我需要帮助:))

THX

==================================== 固定

感谢Chandermani的回答,

知道了!

我的控制器

$scope.createTest = function(){

        $scope.getQuestionaires();

    }

    /*question getter*/
    $scope.getQuestionaires = function(id,question){

        /*send_data here*/

        var records = factory.getRecords(send_data);

        records.then(function(response){
           $scope.questionaires = response.data;
        });


    }

我的工厂

factory.getRecords = function(data) {
      return $http.post('models/model.php', {
         params: data
        });
    };

1 个答案:

答案 0 :(得分:0)

方法getQuestionaires返回$ http post方法的响应,这是一个promise而不是实际数据,因为调用是异步的。

将方法getRecords更改为

factory.getRecords = function(data) {
  return $http.post('models/model.php', {
     params: data
    });
};

当您调用方法getQuestionaires时,请执行类似

的操作
$scope.getQuestionaires().then(function(response){
   //access response.data here
});

尝试了解此类请求的异步性质。如果您在自己的函数中调用异步方法,则可以通过返回promise或提供回调作为函数的参数来访问响应。