7

一般来说,我对 JS 中的 angularJS 非常陌生,我对使用 $document 有点困惑。据我了解 $document 公开了一些 JQuery 函数。因此,当我想删除与选择器匹配的元素时,我会这样做:

$document.remove('.someClassSelector');  

并且该元素应该从 DOM 树中删除,对吗?如果不是,那么以角度操作 DOM 元素及其 css 的正确方法是什么。

4

2 回答 2

10

隐藏/显示 DOM 元素的更常见的“角度方式”是使用ngHide和/或ngShow指令——在您的 HTML 中“声明”它们(因此概述页面上的此语句:

Angular 的构建基于这样一种信念,即在构建 UI 和将软件组件连接在一起时,声明式代码优于命令式代码

同样,要添加/删除 CSS 类,请以声明方式使用ngClass指令。对模型的更改(即 $scope 属性)应该推动 CSS 类的隐藏/显示和添加/删除。

如果您需要更复杂的东西,请将 DOM 操作放入自定义指令中,通常在链接函数中。

在 jQuery 世界中,我们考虑触发 DOM 操作代码的事件(例如,在某些元素上调用 remove())。在 AngularJS 世界中,我们想考虑触发模型更改的事件,然后根据我们的声明性 HTML 自动触发 UI 更改(例如,ng-click 设置一个 $scope 属性,该属性与元素上的 ng-show 绑定)。我还在调整我的想法。

对于大多数 AngularJS 应用程序,您不需要使用 $document。

于 2012-11-07T17:56:34.890 回答
5

AngularJS 嵌入了一个精简版的 Jquery (jqLit​​e)。

如果您只想使用 jqLit​​e(不嵌入 jquery),您可以执行以下操作来删除元素:

angular.element(yourElement).remove()

$document是 window.document 的 jqLit​​e 快捷方式

请参阅:docs.angularjs.org/api/angular.element

于 2012-11-07T09:34:58.977 回答