AngularJS:在控制器中使用指令元素
我正在制作一个分页应用程序,用户可以在同一窗口中切换页面(页面显示在彼此下方)。每当有人更改页面时,我希望窗口滚动到正确的页面 这是我的页面指令:AngularJS:在控制器中使用指令元素,angularjs,Angularjs,我正在制作一个分页应用程序,用户可以在同一窗口中切换页面(页面显示在彼此下方)。每当有人更改页面时,我希望窗口滚动到正确的页面 这是我的页面指令: .directive('page', function () { return { restrict: "E", transclude: true, template: '<div ng-transclude></div>', link: function
.directive('page', function () {
return {
restrict: "E",
transclude: true,
template: '<div ng-transclude></div>',
link: function(scope, element, attrs) {
/*
* Better in controller, now the function has to be evaluated for every directive.
* */
scope.$on('pageChanged', function(event, page) {
if (parseInt(attrs.number) === page) {
if (page === 1) {
window.scrollTo(100, element[0].offsetTop - 110);
}
else {
window.scrollTo(0, element[0].offsetTop - 60);
}
}
});
}
}
但要做到这一点,我需要访问控制器中的pages元素,有没有办法做到这一点
我还在寻找一种方法,可以在用户滚动窗口时将currentPage更改为正确的页面。我认为您不应该依赖事件,而应该向指令对象添加一个
控制器属性,并在其中声明指令的控制器。类似于此的内容(尚未测试):
指令('page',函数(){
返回{
限制:“E”,
是的,
模板:“”,
控制器:函数($scope、$element、$attrs、$transclude、otherinjectable){
//在HTML上添加ng click=“goToPage(n)”指令。这些指令应该位于元素内部,这样才能起作用。
$scope.goToPage=函数(第页){
如果(第===1页){
scrollTo(100,$element[0].offsetTop-110);
}
否则{
scrollTo(0,$element[0].offsetTop-60);
}
},
}
});
有关更多信息,请咨询。我同意,但我如何选择进入正确的页面?我不需要控制器中的不同页面元素才能正常工作吗?因为每个页面都有一个单独的控制器?
$scope.$on('pageChanged', function (event, pageNr) {
$scope.currentPage = pageNr;
/*
* Scroll to the right page directive here
**/
});
.directive('page', function () {
return {
restrict: "E",
transclude: true,
template: '<div ng-transclude></div>',
controller: function ($scope, $element, $attrs, $transclude, otherInjectables) {
// Add ng-click="goToPage(n)" directives on your HTML. Those should be inside of the <page> element for this to work.
$scope.goToPage = function (page) {
if (page === 1) {
window.scrollTo(100, $element[0].offsetTop - 110);
}
else {
window.scrollTo(0, $element[0].offsetTop - 60);
}
},
}
});