在 Angular 应用中使用 JavaScript components/plugins
Using JavaScript components/plugins in an Angular app
到目前为止,我所了解的关于 Angular 的一切都告诉我 不能 直接操作 DOM,考虑到框架的运作方式,这是可以理解的。在 Angular 应用程序中使用外部 JavaScript 组件(例如 TinyMCE as described here)是否安全?如果是这样,有人可以解释为什么吗?我被要求调查这个主题,但到目前为止还没有找到任何超出 "don't touch the DOM".
的东西
当您想要包含依赖于直接 DOM 操作的 javascript 库时,您可以将其封装在组件或指令中。它可以根据需要修改 DOM 的这一部分。
您可以使用各种 Angular 组件生命周期挂钩来执行第三方库的设置和拆卸。
第三方库相关的数据可以通过@Input()
参数传入。
如果您需要不断地向库传递数据,您可以向它传递一个代表相关状态流的 Observable。
第三方组件可以通过一个或多个 EventEmitter (@Output()
) 与 Angular 世界通信。
当 DOM 的其他部分被库操纵时,事情变得棘手。
编辑:
有关如何使用 Split.js library with Angular, checkout this plunker: http://embed.plnkr.co/qGyQWUz16Z2PY1kFUXyt/
的示例
到目前为止,我所了解的关于 Angular 的一切都告诉我 不能 直接操作 DOM,考虑到框架的运作方式,这是可以理解的。在 Angular 应用程序中使用外部 JavaScript 组件(例如 TinyMCE as described here)是否安全?如果是这样,有人可以解释为什么吗?我被要求调查这个主题,但到目前为止还没有找到任何超出 "don't touch the DOM".
的东西当您想要包含依赖于直接 DOM 操作的 javascript 库时,您可以将其封装在组件或指令中。它可以根据需要修改 DOM 的这一部分。
您可以使用各种 Angular 组件生命周期挂钩来执行第三方库的设置和拆卸。
第三方库相关的数据可以通过@Input()
参数传入。
如果您需要不断地向库传递数据,您可以向它传递一个代表相关状态流的 Observable。
第三方组件可以通过一个或多个 EventEmitter (@Output()
) 与 Angular 世界通信。
当 DOM 的其他部分被库操纵时,事情变得棘手。
编辑:
有关如何使用 Split.js library with Angular, checkout this plunker: http://embed.plnkr.co/qGyQWUz16Z2PY1kFUXyt/
的示例