我使用的智能表,并希望跳转到一个特定的页面,一旦控制器被创建和表被显示。
我找到了在堆栈溢出上以编程方式执行这个这里的代码片段:
angular.element( $('#pagination') ).isolateScope().selectPage(pageNumber);
“分页”是我的智能表分页div的HTML id。在控制器退出之前,我不能调用它,因为isolateScope返回“未定义”。因此,为了确保表/页已经完全创建,我想在几毫秒后将其称为表/页。
selectPage从我的自定义分页开始工作,如果我从页面底部的一个按钮调用它,但是如果它是从计时器调用的话,它就能工作。我已经将源代码跟踪到智能表selectPage()和pipe()函数中,我看不到两者之间的区别--其中一种有效,而另一种则不起作用。
参见柱塞:按一个按钮,它将像预期的那样跳转到第5页。按另一个按钮设置一个3s定时器,这个定时器应该跳到第2页,然后什么都不会发生.
发布于 2017-05-01 07:53:30
显然,有一个更好的方式与智能桌从‘外部’沟通。
如果将st-table
指令移动到外部div (在本例中为主体):
<body ng-controller="mainCtrl" st-table="displayed">
然后,我们可以创建一个指令,要求插件的控制器并使用它的功能:
app.directive('handlePagination', function ($timeout) {
return {
require: '^stTable',
restrict: 'AE',
transclude: true,
template: '<button class="btn btn-success btn-xs" ng-click="" ng-transclude></button>',
scope: {
goToPage: '@',
delay: '@'
},
link: function link(scope, element, attrs, controller) {
scope.delay = scope.delay || 0;
element.on('click', function() {
var page = scope.goToPage;
if (page > 0 && page <= controller.tableState().pagination.numberOfPages) {
$timeout(function() {
controller.slice((page - 1) * controller.tableState().pagination.number, controller.tableState().pagination.number);
}, scope.delay)
}
})
}
};
});
参见此普朗克
https://stackoverflow.com/questions/43707604
复制相似问题