2013-05-17 77 views
0

工作我試圖得到執行的角度控制器內以下findTimelineEntries功能saveInterview完成後(含承諾?):無法獲取等函數返回的角度控制器

$scope.saveInterview = function() { 
     $scope.interviewForm.$save({employeeId: $scope.employeeId}, function() { 
      $scope.findTimelineEntries(); 
     }); 
    }; 

保存操作添加或編輯也是時間線條目一部分的數據,因此我希望顯示更新的時間線條目。 首先,我試圖將其更改爲這樣:

$scope.saveInterview = function() { 
     var functionReturned = $scope.interviewForm.$save({employeeId: $scope.employeeId}); 
     if (functionReturned) { 
      $scope.findTimelineEntries(); 
     } 
    }; 

後來到這一點:

$scope.saveInterview = function() { 
     $scope.interviewForm.$save({employeeId: $scope.employeeId}); 
    }; 

    $scope.saveInterview.done(function(result) { 
     $scope.findTimelineEntries(); 
    }); 

而且finaly我發現了大約承諾一些信息,所以我嘗試這樣的:

$scope.saveInterview = function() { 
     $scope.interviewForm.$save({employeeId: $scope.employeeId}); 
    }; 

    var promise = $scope.saveInterview(); 
    promise.done(function() { 
     $scope.findTimelineEntries(); 
    }); 

但是不知怎麼的事實上,它按照http://nurkiewicz.blogspot.nl/2013/03/promises-and-deferred-objects-in-jquery.html這種方式工作,並不意味着我可以在這些$ scope.someFuntcion = function()函數上使用相同的方法:-S

+0

是$ scope.interviewForm。$ save a $ resource? – lucuma

+0

不,你可以在這個頁面看到這個函數的作用域:http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller – user1829860

+0

$ save在那個鏈接中沒有提及。你只是在尋找一個使用角度承諾的例子嗎? – lucuma

回答

1

以下是使用承諾的示例。首先,您需要將$ q包含到您的控制器中。

$scope.saveInterview = function() { 
    var d = $q.defer(); 
    // do something that probably has a callback. 
    $scope.interviewForm.$save({employeeId: $scope.employeeId}).then(function(data) { 
     d.resolve(data); // assuming data is something you want to return. It could be true or anything you want. 
    }); 


    return d.promise; 

}