【问题标题】:Is that a good practice to use jQuery with AngularJS?将 jQuery 与 AngularJS 一起使用是一个好习惯吗?
【发布时间】:2016-04-14 22:30:51
【问题描述】:

我多年来一直在使用 jQuery。现在,我想学习一些新的东西来构建单页网站。我选择了 AngularJS。

目前我想知道将 jQuery 与 AngularJS 一起使用是否是个好主意?

示例。

我在 AngularJS 控制器中有类似的东西:

$http.post('ajax/gettimeline', { page: page }).success(function (data) {
        $rootScope.loading = false;


            // Here I need to built dynamic html with getting and setting
            // dynamic elements size, positions, change their properties, etc.

        }
    });

用 jQuery 构建那些动态的 html 元素是一件容易的事。 但是使用 AngularJS 看起来会很痛苦。

将不胜感激任何建议。

谢谢

【问题讨论】:

  • 你读过this,对吧?
  • 嗯,这个想法是,你完成所有的 html 工作,并通过循环创建动态元素,例如,在 html 中使用指令。通常你不需要太多使用jQuery,但如果你使用它没有冲突。问题是,您使用 jQuery 创建的元素不会由 angular 管理。

标签: javascript jquery angularjs


【解决方案1】:

不,这不是一个好主意。您在 Angular 应用程序中使用 jQuery 编码实践,这会让您头疼 - 一次是因为这些实践违背了 Angular 精神,还因为您不会获得 Angular 的好处。

Angular 开发中最重要的部分之一是:永远不要从控制器中操作 DOM。这在 jQuery 中很好,但在 Angular 中,您应该修改模型并让 Angular 渲染它。 Angular 有一个内置的模板机制,你应该使用它来加载 HTML 片段。如果您需要动态创建 HTML,您应该在指令中执行此操作。其他一切都违反了“关注点分离”原则。

如果您使用 jQuery 或原生 DOM 方法来操作输入设置或修改 DOM,那么您将自己设置为与 Angular 争吵,这将导致很多难以调试的错误。 Angular 的要点之一是two-way databinding,如果您坚持自己将数据绑定到 HTML,这不是一个有用的功能。也许像 mustache 或 knockout 这样更简单的模板库之一会更符合您的喜好?

要获得 Angular 的好处,意味着放弃一些久经考验的实践并学习内置指令,尤其是 ng-repeatng-ifng-classng-clickng-change 以及类似的东西Angular UI

【讨论】:

    【解决方案2】:

    大号。将 jQuery 与 angular.js 一起使用并不是一个好主意。 jQuery 做不同的事情,而 angular.js 做不同的事情。 jQuery 操作 DOM 并动态添加、追加、删除元素。另一方面,angular.js 只是操作模型数据,但您可以使用 angular.js 内置的 jqlite。

    【讨论】:

      猜你喜欢
      • 2019-08-14
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 2016-01-03
      • 2023-03-21
      • 2021-02-09
      • 2014-08-27
      • 2014-12-22
      相关资源
      最近更新 更多