在meanjs应用程序控制器“然后”的承诺不是一个功能

时间:2014-12-07 18:00:12

标签: angularjs mean-stack angular-promise

在我使用meanjs生成器和自动生成的CRUD模块创建的meanjs app中,对于下面的收入,我想自定义get方法返回的promise,以便我可以调用方法并对检索到的数据进行转换。所以我试图在我的控制器中更改它:

// Find existing Income
    $scope.findOne = function() {
        Incomes.get({
            incomeId: $stateParams.incomeId
    }).then(function(income){
       $scope.income = income;
       $scope.incomeDollar= income*$scope.dollarRate;
    });

这只给我一个错误:undefined不是一个函数,然后指向。 我在这做错了什么?如何对从上面的get方法检索的数据进行转换?

我尝试使用的模式位于文章here的最后。我想从短版本切换到长版本,以便我可以在回调中做更多的事情。

// LONG:

myModule.controller('HelloCtrl', function($scope, HelloWorld) {

  HelloWorld.getMessages().then(function(messages) {
    $scope.messages = messages;
  });

});

为了简化这一点,本文的作者将'getMessages'返回的承诺放在范围内:

// SHORTER:

myModule.controller('HelloCtrl', function($scope, HelloWorld) {

  $scope.messages = HelloWorld.getMessages();

});

1 个答案:

答案 0 :(得分:2)

可以使用$ promise访问promise对象。来自doc

  

资源实例和集合具有这些附加功能   属性:

     

$ promise:创建的原始服务器交互的承诺   这个实例或集合。

     

成功时,使用相同的资源实例解析promise   集合对象,使用来自服务器的数据进行更新...

因此,您的代码应如下所示:

// Find existing Income
$scope.findOne = function() {
    Incomes.get({
        incomeId: $stateParams.incomeId
}).$promise.then(function(income){
   $scope.income = income;
   $scope.incomeDollar= income*$scope.dollarRate;
});