【发布时间】:2012-10-23 04:04:39
【问题描述】:
好的,所以我知道在使用 AngularJS 时在控制器中进行任何 DOM 操作被认为是不好的做法,您应该使用指令和 $scope 来处理这些内容,但是事件绑定呢?从它的外观来看,考虑到所有内置事件指令,如 ngClick、ngMousedown、ngMouseenter 等,这也是不受欢迎的......但如果是这样的话,那么我有一段代码我不知道如何做AngularJS的方式。
我正在构建的应用程序具有无限滚动,它是通过这段代码(当前位于控制器中)实现的:
$(document).bind('scroll', function(){
if(!$scope.loadingIssues && $(window).scrollTop() + $(window).height() >= $('.user-feedback-list').offset().top + $('.user-feedback-list').height()) {
$scope.loadIssues();
}
});
这允许用户滚动页面,当页面到达存储无限滚动数据的元素的底部时,它会触发函数以加载更多数据。现在我没有进行任何 DOM 操作,所有函数都只是更新附加到 $scope 的数据,我让 AngularJS 进行 DOM 更新,但是这个事件是否与 AngularJS 的最佳实践绑定?如果是这样,我怎么能以 AngularJS 的方式做到这一点(我认为指令在这种情况下不起作用,因为我认为不可能将指令附加到文档对象)?
【问题讨论】:
-
我想我会尝试使用服务和运行来处理它
-
当你说“跑去处理它”时,你的意思是“学会处理它”吗?否则我不知道那是什么意思。
-
不,我的意思是docs.angularjs.org/api/angular.Module,run(initializationFn) ,使用此方法注册在当前模块的注入器完成加载时需要执行的工作。我认为这可能会有所帮助。