Javascript $resource未定义,带有$promise

Javascript $resource未定义,带有$promise,javascript,angularjs,Javascript,Angularjs,我已经在这个问题上纠缠了很长一段时间,无法理解为什么没有返回值。我正在使用Angular$resource向API发出GET请求 我的$resource工厂如下所示: .factory("Bookings", function ($resource) { return $resource("www.example/bookings_on_date/:day", {}); }) function getBookings(day) { return Bookings.get({"d

我已经在这个问题上纠缠了很长一段时间,无法理解为什么没有返回值。我正在使用Angular
$resource
向API发出GET请求

我的$resource工厂如下所示:

.factory("Bookings", function ($resource) {
    return $resource("www.example/bookings_on_date/:day", {});
})
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;
});
我曾试图履行承诺,但无法正确履行

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
时,它返回未定义


我也尝试过这一切,但不幸的是没有任何运气。

我认为应该是这样的:

.factory("Bookings", function ($resource) {
    return $resource("www.example/bookings_on_date/:day", {});
})
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;
});
更新:我认为下一个代码样式可以帮助您防止下一个扩展方法问题:

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;
});
这里有一点好处:

  • 将对象传递到函数可以帮助您轻松地传递不同的 方法中的参数和参数非常接近方法调用(a 有点容易阅读)
  • 从函数返回完整响应 可以帮助您处理不同的数据(方法可以重播 不同的回答取决于论点,但这不是好的做法 在这种情况下)
p.s.否则,您可以删除函数声明和如下代码(尽可能简单):


预订之前,您缺少
返回
。获取
。JavaScript函数没有返回值return
undefined
。您需要阅读Ping me并让我知道它是否解决了您的问题,以便我们可以作为副本关闭,或者如果它没有-编辑,我们将看到我们可以做些什么-愉快的编码。就像您刚才做的那样,在我的名字前面写
@
,您能解决您的问题吗?