$ resource angular返回undefined with $ promise

时间:2015-07-10 10:52:43

标签: javascript angularjs

我已经坚持了很长一段时间,并且无法弄清楚为什么没有返回该值。我正在使用Angular $resource向API发出GET请求。

我的$资源工厂看起来像这样:

.factory("Bookings", function ($resource) {
    return $resource("www.example/bookings_on_date/:day", {});
})

我已尝试实施承诺,但无法正确执行此操作。

function getBookings(day){
        return Bookings.get({"day": day}).$promise.then(function(data) {
        console.log(data.total)
        return data.total;
    });
}

$scope.todaysBookings = getBookings(TODAY);
$scope.tomorrowsBookings = getBookings(TOMORROW);

当我在控制台中查看console.log($scope.todaysBookings)$scope.tomorrowBookings时,它会返回undefined。

我也尝试了jsfiddle的所有内容,但遗憾的是没有运气。

1 个答案:

答案 0 :(得分:2)

我认为应该是这样的:

            ...
            var localK = k;
            new Thread(() =>
            {
                if (localK < 50)
                {
                    g.DrawImage(new Bitmap(getBestPic(argb)), new Point(i, localK));
                }
            }).Start();
            ...

更新:我认为下一个代码样式可以帮助您防止下一个扩展方法问题:

function getBookings(day) {
    return Bookings.get({"day": day}).$promise.then(function(data) {
        return data.total;
    });
}

getBookings(TODAY).then(function(total) {
    $scope.todaysBookings = total;
});

getBookings(TOMORROW).then(function(total) {
    $scope.tomorrowsBookings = total;
});

这里有一点优势:

  • 将对象传递给函数可以帮助您轻松传递不同的内容 方法和参数的参数非常接近方法调用(a 有点容易阅读);
  • 从函数返回完整的响应 可以帮助您处理不同的数据(方法可以重播 不同的反应取决于论点,但这不是好的做法 在这种情况下);

p.s。否则,你可以删除这样的函数声明和代码(尽可能保持简单):

function getBookings(args) {
    return Bookings.get(args).$promise;
}

getBookings({"day": TODAY}).then(function(data) {
    $scope.todaysBookings = data.total;
});

getBookings({"day": TOMORROW}).then(function(data) {
    $scope.tomorrowsBookings = data.total;
});