一般来说,我对 JS 中的 angularJS 非常陌生,我对使用 $document 有点困惑。据我了解 $document 公开了一些 JQuery 函数。因此,当我想删除与选择器匹配的元素时,我会这样做:
$document.remove('.someClassSelector');
并且该元素应该从 DOM 树中删除,对吗?如果不是,那么以角度操作 DOM 元素及其 css 的正确方法是什么。
一般来说,我对 JS 中的 angularJS 非常陌生,我对使用 $document 有点困惑。据我了解 $document 公开了一些 JQuery 函数。因此,当我想删除与选择器匹配的元素时,我会这样做:
$document.remove('.someClassSelector');
并且该元素应该从 DOM 树中删除,对吗?如果不是,那么以角度操作 DOM 元素及其 css 的正确方法是什么。
隐藏/显示 DOM 元素的更常见的“角度方式”是使用ngHide和/或ngShow指令——在您的 HTML 中“声明”它们(因此概述页面上的此语句:
Angular 的构建基于这样一种信念,即在构建 UI 和将软件组件连接在一起时,声明式代码优于命令式代码
同样,要添加/删除 CSS 类,请以声明方式使用ngClass指令。对模型的更改(即 $scope 属性)应该推动 CSS 类的隐藏/显示和添加/删除。
如果您需要更复杂的东西,请将 DOM 操作放入自定义指令中,通常在链接函数中。
在 jQuery 世界中,我们考虑触发 DOM 操作代码的事件(例如,在某些元素上调用 remove())。在 AngularJS 世界中,我们想考虑触发模型更改的事件,然后根据我们的声明性 HTML 自动触发 UI 更改(例如,ng-click 设置一个 $scope 属性,该属性与元素上的 ng-show 绑定)。我还在调整我的想法。
对于大多数 AngularJS 应用程序,您不需要使用 $document。
AngularJS 嵌入了一个精简版的 Jquery (jqLite)。
如果您只想使用 jqLite(不嵌入 jquery),您可以执行以下操作来删除元素:
angular.element(yourElement).remove()
$document
是 window.document 的 jqLite 快捷方式