Abd*_*eed 3 angularjs angular-ui-router ionic-framework ionic
在离子中,我在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
}
}
}
}
})
Run Code Online (Sandbox Code Playgroud)
事件控制器
(function() {
'use strict'
angular
.module('app.events')
.controller('EventsController', EventsController);
EventsController.$inject = ['$scope','events'];
function EventsController ($scope,events) {
$scope.events = events;
}
}
)();
Run Code Online (Sandbox Code Playgroud)
膨胀事件控制器 - 示例
(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');
})
}
}
}
)();
Run Code Online (Sandbox Code Playgroud)
我可以用另一种方式刷新这些数据,而不是膨胀控制器吗?
调用$state.reload()哪个是别名:
$state.transitionTo($state.current, $stateParams, {
reload: true, inherit: false, notify: true
});
Run Code Online (Sandbox Code Playgroud)
这将导致所有状态被"重新输入",从而获取结果并重新初始化控制器.
| 归档时间: |
|
| 查看次数: |
3522 次 |
| 最近记录: |