如何在Angular JS中的成功方法之后调用then方法

时间:2015-06-10 10:07:15

标签: angularjs

我有两个功能。完成后我想使用then方法调用下一个。我无法使结构正确。

成功方法

 self.Read_Data = function () {
    return Ajax.Get({
        url: READ_DATA,
        success: function (data) 
        {
            self.Orderdata = data.data;
        }
        , error: function (result, status, headers) {
        }
    });
}
self.Read_Data()

然后方法 - 另一个函数

self.CopyOrderData = function () {
   self.CurrentData = [];
   for (var i = 0; i < self.Orderdata.length; i++)
   {
       self.CopyOrderData = { Checked: 0,OrderNumber: self.Orderdata[i].OrderNumber, OrderName: self.Orderdata[i].Name };
   };
   return 
}

如何将CopyOrderData函数合并为Read_data()的<{1}}?

我尝试的是这个(但它不起作用):

self.Read_data().then=function(){
 self.CurrentData = [];
   for (var i = 0; i < self.Orderdata.length; i++)
   {
       self.CurrentData = { Checked: 0,OrderNumber: self.Orderdata[i].OrderNumber, OrderName: self.Orderdata[i].Name };
   };
   return 
 }
}

所以基本上我有一个函数,我加载数据然后我想将数据复制到另一个数组。

2 个答案:

答案 0 :(得分:2)

试试这个

self.Read_data().then(function(){
 self.CurrentData = [];
   for (var i = 0; i < self.Orderdata.length; i++)
   {
       self.CurrentData = { Checked: 0,OrderNumber: self.Orderdata[i].OrderNumber, OrderName: self.Orderdata[i].Name };
  }
   return 

});

答案 1 :(得分:2)

为什么不简单地在成功处理程序中移动CopyOrderData()的内容?

 self.Read_Data = function () {
    return Ajax.Get({
        url: READ_DATA,
        success: function (data) 
        {
            self.Orderdata = data.data;
            self.CurrentData = [];
               for (var i = 0; i < self.Orderdata.length; i++)
               {
                  self.CopyOrderData = { Checked: 0,
                  OrderNumber:self.Orderdata[i].OrderNumber, 
                  OrderName: self.Orderdata[i].Name };
               };    

        }
        , error: function (result, status, headers) {

        }

    });
}
self.Read_Data()

更轻松的说,它不是做事的角度方式。您应该使用$ http服务(或$ resource)来进行REST调用。等等,

$http.get(READ_DATA).then(function(data){
   //do stuff with 'data'
});

很开始。或者,您也可以使用单独的成功和错误处理程序。

self.Read_Data = function () {
   return $http.get(READ_DATA)
 }

并处理像

这样的回复
Read_Data().then(function(){
        //success_handler
     },function(err){
        //error_handler
      }
   );

Read_Data().success(function(){
        //success_handler
     }).error(function(err){
        //error_handler
      });

干杯!