【发布时间】:2016-10-06 09:57:25
【问题描述】:
在我的应用程序中,我有两个视图 search 和 masternameserch,这些视图在 app.js 中定义为:
$stateProvider
.state('search', {
url: '/',
controller: 'searchController',
controllerAs: 'search',
templateUrl: '/app/views/search.html'
})
.state('searchmasterName', {
url: '/searchmastername',
controller: 'searchMasterNameController',
controllerAs: 'masternameSearch',
templateUrl: '/app/views/searchmastername.html'
})
在我看来,我将 ui-bootstrap 分页控件设置为
<div class="text-center">
<uib-pagination ng-show="masternameSearch.pgTotalItems > 10" total-items="masternameSearch.pgTotalItems" ng-click="masternameSearch.pageChanged(); $event.stopPropagation();" ng-model="masternameSearch.pgCurrentPage" class="pagination-md" max-size="masternameSearch.pgMaxSize" boundary-links="true"></uib-pagination>
</div>
在控制器中,我的 pageChanged() 函数设置如下:
vm.pageChanged = function () {
var pageRequest = buildMasterNameSearchRequest(); //get cached request
pageRequest.pageFrom = vm.pgCurrentPage; //set page number to request
var currentPath = $state.current.name;
searchService.postSearchRequest(pageRequest).then(renderResults, onError);
$state.go('searchmastername',
{},
{
notify: false,
location: false,
inherit: false,
reload: false
});
$timeout(function () { location.hash = '#top' }, 1000);
}
我遇到的问题是,每当单击分页控件时,底层 URL 始终是根 URL。因此,当我单击分页按钮时,搜索会执行,但我会导航回错误的默认主视图。正如您从代码中看到的那样,我首先尝试在指令本身中将 onchange 更改为 ng-click 事件,并尝试停止传播以停止通过 $event 的重定向。这没有用。我尝试的第二件事是在pageChanged() 函数中调用状态转换/state.go(),我基本上重新加载了视图。但是,这不起作用,因为它会引发无法找到状态的错误。遗憾的是,这实际上阻止了页面重新加载或导航到主页,因此该错误实际上使页面按最终用户可能期望的方式工作,但是在缺少状态周围产生错误,我知道这是不正确的。
更新:错误是由类型 searchmastername 而不是 searchmasterName 生成的。
进行此更改修复了错误,但仍会导致站点重定向到要加载的默认视图。
任何人都可以提供一个想法或方法,通过在单击时将我重定向到默认主视图来使分页控件不引起导航事件?
-干杯
【问题讨论】:
标签: angularjs pagination angular-ui-router angular-ui-bootstrap