在我使用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();
});
答案 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;
});