【发布时间】:2015-11-25 10:55:00
【问题描述】:
我们想使用 ui-router 实现分页(或过滤)。我们不想在每次 next/prev 参数更改时重新加载控制器。我们想监听一个事件并使用新的状态参数从 API 加载数据。
来自我们 routes.js 的代码
$stateProvider.state('app.company.account.charges.index', {
url: '?before&after',
controller: 'ChargesCtrl',
templateUrl: 'app/charges.html',
reloadOnSearch: false,
params: {
before: { value: null, squash: true },
after: { value: null, squash: true },
}
});
我们的控制器:
function ChargesCtrl() {
var loadCharges = function() {
Charge.query({before: $state.params.before, after: $state.params.after}).then(function(charges) {
$scope.charges = charges;
});
}
$scope.goNext = function() {
$state.go('app.company.account.charges.index', {before: $scope.pagination.before, after: null});
};
$scope.goPrevious = function() {
$state.go('app.company.account.charges.index', {after: $scope.pagination.after, before: null});
};
$scope.$on('state params were changed', function() {
loadCharges();
});
}
如果由于 reloadOnSearch 为 false 而未引发 $stateChangeSuccess,我们如何跟踪状态参数的变化。
附:现在我们只是广播自己的事件来解决这个问题,但我正在寻找“自然”的解决方案:)
【问题讨论】:
-
嘿伙计,这可能对你有帮助:stackoverflow.com/questions/20884551/…
-
是的。这就是答案。谢谢!我仍然不喜欢这里提供的 hack:stackoverflow.com/a/29262392/2530416 :) 可能我们只会引发我们自己的事件来重新加载控制器中的数据。
标签: angularjs angular-ui-router