gpt4 book ai didi

angularjs - 如何从外部调用指令函数?

转载 作者:行者123 更新时间:2023-12-02 15:31:00 25 4
gpt4 key购买 nike

我有一个指令可以为我生成一个列表。该指令具有分页方法。我想使用键盘控制此列表,以便当我向左或向右按​​列表页面的下一页或上一页时。

无论如何我可以做到这一点吗?

下面是我的指令代码:

app.directive("gridview", function(){
return {
restrict:'E',
transclude: true,
template:'<div><button ng-disabled="!hasPrevious()" ng-click="onPrev()"> Previous </button><button ng-disabled="!hasNext()" ng-click="onNext()"> Next </button></div><div ng-transclude></div>',
scope:{
'currentItem':'=',
'currentPage':'=',
'pageLimit':'=',
'data':'=',
'totalPages' :'&'
},
link:function($scope, element, attrs){

$scope.size = function(){
return angular.isDefined($scope.data) ? $scope.data.length : 0;
};

$scope.end = function(){
return $scope.start() + $scope.pageLimit;
};

$scope.start = function(){
return $scope.currentPage * $scope.pageLimit;
};

$scope.totalPages = function(){
$scope.totalPages({theTotal : $scope.size});
};

$scope.page = function(){
return !!$scope.size() ? ( $scope.currentPage + 1 ) : 0;
};

$scope.hasNext = function(){
return $scope.page() < ( $scope.size() / $scope.pageLimit ) ;
};

$scope.onNext = function(){
$scope.currentPage = parseInt($scope.currentPage) + 1;
$scope.currentItem = parseInt($scope.currentPage) + 1;
};

$scope.hasPrevious = function(){
return !!$scope.currentPage;
} ;

$scope.onPrev = function(){
$scope.currentPage=$scope.currentPage-1;
};
}
}
});

最佳答案

您始终可以使用 Angular 事件系统,这将允许您在 Controller 和指令之间进行交互。

只需在您的 Controller 中广播一个事件,并在您的指令中收听它以调用您想要的函数。

Controller

$scope.$broadcast('onPrev')

指令

$scope.$on('onPrev', function () {
$scope.onPrev()
})

那是主要问题,但你的更具体的问题,你应该看看 ngKeypress

关于angularjs - 如何从外部调用指令函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25855811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com