【发布时间】:2015-12-13 13:00:58
【问题描述】:
在 ionic 中,我在控制器初始化之前使用 Ui-Router 的 resolve 功能解析我的数据。截至目前,我不必将$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');
})
}
}
}
)();
我可以用另一种方式刷新这些数据,而不是让控制器膨胀?
【问题讨论】:
标签: angularjs ionic-framework angular-ui-router ionic