正在刷新解析数据 - Ui 路由器

Refreshing Resolve Data - Ui Router

在 ionic 中,我在初始化控制器之前使用 Ui-路由器的 resolve 功能解析我的数据。截至目前,我不必 $inject 我的 EventService 进入控制器。 EventServicegetEvents() 方法在控制器初始化之前解析数据。这样一切正常,但现在我正在尝试实施 Ion Refresher。我可以轻松地刷新控制器中的 $scope.events 数组,使控制器本身膨胀,因为我必须将 $injectEventService 放入控制器中,这也意味着每个使用相同的数据必须包含处理刷新的逻辑。在控制器外部刷新数据的最佳方式是什么?还是最好的方式?

事件状态定义和数据解析

.state('tab.events', {
    url: '/events',
    views: {
    'tab-event': {
        templateUrl: 'views/events.html',
        controller: 'EventsController',
        resolve: {
            events: function (EventService) {
                return EventService.getEvents(); //resolves data before ctrl initialized
            }
        }
    }
   }
})

事件控制器

(function() {
  'use strict'

    angular
        .module('app.events')
        .controller('EventsController', EventsController);

        EventsController.$inject = ['$scope','events'];

        function EventsController ($scope,events) {

            $scope.events = events;

        }

}
)();

膨胀事件控制器 - 示例

(function() {
  'use strict'

    angular
        .module('app.events')
        .controller('EventsController', EventsController);

        EventsController.$inject = ['$scope','events','EventsService'];

        function EventsController ($scope,events,EventsService) {

            $scope.events = events;

            $scope.refresh = refresh;

            function refresh () {
                clearCache(); //pretend method
                EventsService.getEvents()
                    .then(function (events) {
                        $scope.events = events;
                        $scope.$broadcast('scroll.refreshComplete');
                    })
            }
        }

}
)();

我可以用另一种方式刷新此数据而不是膨胀控制器吗?

调用 $state.reload(),它是以下的别名:

$state.transitionTo($state.current, $stateParams, { 
  reload: true, inherit: false, notify: true
});

这将导致您的所有状态都变为 "re-entered",从而获取解析并重新初始化控制器。

我希望进行一次硬刷新,$state.reload() 所做的基本上不是答案。我也有这个问题,宁愿能够调用一些方法来强制所有已解析的数据对象重新运行。重新加载会导致页面刷新,从而导致令人讨厌的 UI 伪影。