在离子中,我在resolve
初始化控制器之前使用Ui-Router的功能解析我的数据.截至目前,我没有给$inject
我EventService
到控制器.所述EventService
的getEvents()
控制器被初始化之前方法解决的数据.一切都以这种方式正常工作,但现在我正在尝试实施Ion Refresher.我可以很容易地刷新我的$scope.events
阵列控制器内,腹胀控制器本身,因为我会$inject
在EventService
到控制器,这也意味着,每一个使用相同的数据控制器必须包含的逻辑来处理刷新.刷新控制器外部数据的最佳方法是什么?这是最好的方法吗?
事件状态定义和数据解析
.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 });
这将导致所有状态被"重新输入",从而获取结果并重新初始化控制器.