使用angularJS和jquery的最佳方式$('document')。ready()

时间:2014-08-28 10:00:07

标签: javascript jquery angularjs

我有一堆设计师给我的页面,必须与我在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'关注点分离的哲学。控制器是您只有业务逻辑的地方。

抛出这段代码的最佳位置在哪里?

1 个答案:

答案 0 :(得分:2)

AngularJS这里是为了强大的架构而构建的,这就是我们在指令和其他组件方面看到这么多模块的原因。将JQuery与它放在一起就像离开它们的核心设计一样,你最终会在维护代码库时陷入混乱。

如果您正在编写AngularJS应用程序,jQuery是一个拐杖。

如果您要启动AngularJS应用,请仔细查看ng-boilerplate。然后看看ui-bootstrap’s directives。它们是一个活生生的例子,说明如何使用一小部分代码来执行“jQuery事务”,并构建一个更易于维护,更易于测试以及通常更适合使用的应用程序。

看看这个东西

您可以使用。{/ p>而不是$('document').ready()

angular.element(document).ready(function() {
  :
  :
});