javascript - Angular 2 中的 UX 效果

标签 javascript angular user-experience

我不想向我的 Angular 2 项目添加一些交互来增强其用户体验。我知道如何与 DOM 交互,或者更改元素属性的状态。可以为我的每个组件编写代码。但有一些示例将在整个站点范围内使用,为此我不想在我想要使用它的所有地方重复代码。

一个简单的例子是滚动时淡入元素。我知道如何在特定 Controller 中实现此目的,但我需要帮助才能使此行为全局化而无需重复代码。

在 Javascript/jQuery 中,我们可以包含一个主 js 文件,该文件将事件监听器绑定(bind)到元素,该元素可用于所有页面。如何在 Angular 中实现类似的效果?

最佳答案

这主要可以通过指令来完成。以您的示例为例,您将创建一个 [scroll-fade]指令:

@Directive({
  selector: '[scroll-fade]'
})
export class ScrollFade {

}

然后您需要监听全局滚动事件,使用 @HostListener('window:scroll')并将您的样式应用到 :host元素。

然后,您可以通过将其应用于您想要受影响的元素来使用它: <div class="scroller" scroll-fade></div>

如果您需要更复杂的东西,您始终可以构建一个共享模块,在其中创建可重用的组件,而无需重复代码 - 然后您可以将其转换为库并与社区共享。

有答案 here on StackOverflow这解释了如何做。

关于javascript - Angular 2 中的 UX 效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42032401/

相关文章:

javascript - 如何设置 Angular 2 Material Design 2.0.0-beta.2

javascript - 如何在现有的 Meteor 项目中使用语义 UI?

javascript - xhr 响应 : connection closed

javascript - Chart.js - 千位分隔符、工具提示中的货币、X 和 Y 轴标签

JavaScript parentNode 跳过容器 div

javascript - NestJS 根据浏览器语言传递静态文件

javascript:无法将 oncontextmenu 属性设置为预定义函数

angular - 相当于弃用的动态组件加载的 compileComponentAsync

android - 根据设备大小在对话和 Activity 之间切换

user-interface - 用户体验问题 : is better to have "serious delete" or have "trash"