解析查询然后在解析后更改状态

Parse query then state change after resolve

我定义了一个工厂来进行在完成时解析的解析调用。

.factory('currentRestaurantService', ['$rootScope', '$q', function($scope, $q) {
    return {
        getCurrentRestaurant: function() {
            var defer = $q.defer(); // Create a deferring object
            $scope.currentUser = Parse.User.current();

            // Get restaurant for user
            var restaurantObject = Parse.Object.extend("Restaurant");
            var query = new Parse.Query(restaurantObject);
            var thisUsersRestaurants = query.equalTo("user", $scope.currentUser);

            thisUsersRestaurants.find().then(function(restaurants) {
                defer.resolve($scope.restaurants);
            });

            return defer.promise; // Create an Angular promise to be resolved
        }
    };
}])

我在我的一个州的解决块中进行调用,希望在转到销售页面之前解决。

.state('dashboard.sales', {
        url: '/sales',
        templateUrl: './app/dashboard/partials/sales/sales.html',
        controller: 'DashboardSalesCtrl',
        resolve: {
            currentRestaurant: function() { return currentRestaurantService.getCurrentRestaurant(); }
        }
    })

我不明白为什么这不起作用。过去一周我一直在用头撞墙,想不通。我的代码有什么问题?

在 resolve currentRestaurant 函数中使用它之前,你应该先注入 currentRestaurantService 依赖。

代码

.state('dashboard.sales', {
    url: '/sales',
    templateUrl: './app/dashboard/partials/sales/sales.html',
    controller: 'DashboardSalesCtrl',
    resolve: {
      currentRestaurant: function(currentRestaurantService) { //added dependency in function
        return currentRestaurantService.getCurrentRestaurant();
      }
    }
})