我有一堆设计师给我的页面,必须与我在AngularJS中的现有项目集成。
我获得的页面使用了大量的jquery。造成问题的一件事是jquery的$('document').ready()
函数。
由于在角度项目中页面只加载一次,因此任何页面中的大多数document.ready()
部分都不起作用。每次页面更改时,此函数中都有一些代码无法正常工作。
所以我的项目中的任何一个控制器都应该有document.ready
上的任何代码,我将它扔到控制器中,如下所示:
setTimeout(function(){
$scope.$apply(function() {
var _wht=($(window).height());
var _wwt=($(window).width());
_wht=($(window).height());
_wwt=($(window).width());
if(_wht > 450){
var mcht = _wht - ($('header').height()+ $('footer').height()+50);
$('.login-page').css('height',mcht+'px');
$('.login-page').css('padding-top',((mcht - 158)/2) +'px');
}
});
});
这非常有效。
但我认为这反对angularJS'关注点分离的哲学。控制器是您只有业务逻辑的地方。
抛出这段代码的最佳位置在哪里?
答案 0 :(得分:2)
AngularJS
这里是为了强大的架构而构建的,这就是我们在指令和其他组件方面看到这么多模块的原因。将JQuery
与它放在一起就像离开它们的核心设计一样,你最终会在维护代码库时陷入混乱。
如果您正在编写AngularJS应用程序,jQuery是一个拐杖。
如果您要启动AngularJS
应用,请仔细查看ng-boilerplate。然后看看ui-bootstrap’s directives。它们是一个活生生的例子,说明如何使用一小部分代码来执行“jQuery事务”,并构建一个更易于维护,更易于测试以及通常更适合使用的应用程序。
看看这个东西
How do I “think in AngularJS” if I have a jQuery background? - 扩展此观点的优秀Stack Overflow帖子
您可以使用。{/ p>而不是$('document').ready()
angular.element(document).ready(function() {
:
:
});