我需要从控制器内部滚动到某个元素。

使用du-smooth-scrollhref="#invoice-wrapper"可以在html页面中的按钮和其他元素上正常使用。

<button du-smooth-scroll href="#invoice-wrapper">

<!--Invoice Form-->
<div id="invoice-wrapper"></div>


有没有办法从控制器内部激活相同的东西?

vm.scrollTo = (element) => {
    du-smooth-scroll(element)
}


或类似的东西?有办法吗?

最佳答案

您可以使用$scope.$broadcast并从指令中捕获事件,尽管仅当视图中存在du-smooth-scroll时,此方法才有效。

// in your controller
vm.scrollTo = (element) => {
  $scope.$broadcast("du-smooth-scroll", element);
};

// in your directive
$scope.$on("du-smooth-scroll", function (element) {
  // call your function that does that scroll
});


我想以另一种方式建议创建一个全局scrollTo函数,该函数可在您的指令和控制器或任何地方使用

$rootScope.scrollTo = function (element) {
  // do the scroll thing
};


然后只需在控制器和指令中调用$rootScope.scrollTo(element)

关于javascript - 从 Controller 内部 Angular 滚动到元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45949637/

10-12 07:37