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

时间:2015-06-20 18:02:20

标签: angularjs parse-platform angularjs-factory angular-ui-router

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

.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(); }
        }
    })

我无法弄清楚为什么这不起作用。过去一周我一直在撞墙,无法弄明白。我的代码出了什么问题?

1 个答案:

答案 0 :(得分:2)

在解析currentRestaurantService函数中使用它之前,您应首先注入currentRestaurant依赖性。

代码

.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();
      }
    }
})