我多年来一直在使用jQuery。现在,我想学习构建单页网站的新内容。我选择了AngularJS。
目前我想知道在AngularJS中使用jQuery是否是一个好主意?
实施例
我在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看起来会很痛苦。
欢迎任何建议。
由于
答案 0 :(得分:10)
不,这不是一个好主意。你在Angular应用程序中使用jQuery编码实践,这会让你头疼 - 因为这些实践违背了Angular精神,也因为你没有获得Angular的好处。
Angular开发中最重要的部分之一是:您不应该从控制器操纵DOM。这在jQuery中很好,但是在Angular中,你应该修改你的模型并让Angular渲染它。 Angular有一个模板机制,您应该使用它来加载HTML片段。如果需要动态创建HTML,则应在指令中执行此操作。其他一切都违反了"关注点的分离"原理
如果您使用jQuery或本机DOM方法来操作输入设置或修改DOM,那么您可以自行设置与Angular的争用,这会导致很多难以调试的错误。 Angular的一个要点是two-way databinding,如果您坚持将数据绑定到HTML,则这不是一个有用的功能。也许你最喜欢的一个更简单的模板库如小胡子或淘汰赛?
获得Angular的好处意味着放弃一些经过验证的真实实践并了解内置指令,尤其是ng-repeat
,ng-if
,ng-class
,ng-click
和ng-change
可能类似于Angular UI。
答案 1 :(得分:1)
大号。在angular.js中使用jQuery并不是一个好主意。 jQuery做了不同的事情而angular.js做了不同的事情。 jQuery操纵DOM并动态添加,追加,删除元素。另一方面,angular.js只是操纵模型数据,但你可以使用内置于angular.js的jqlite。