- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在阅读 Angular 2 文档 where I found :
Passing the $event is not a good practice
Typing the event object reveals a significant objection to passing the entire DOM event into the method: the component has too much awareness of the template details. It can't extract information without knowing more than it should about the HTML implementation. That breaks the separation of concerns between the template (what the user sees) and the component (how the application processes user data).
出于某种原因,我无法完全理解它所说的内容。似乎在任何地方都没有可用的解释。
谁能用更简单的术语解释它的确切含义(如果可能的话,举个例子)?
最佳答案
查看文档已经提供的前后示例:
@Component({
selector: 'key-up1',
template: `
<input #box (keyup)="onKey($event)">
<p>{{values}}</p>
`
})
export class KeyUpComponent_v1 {
values = '';
onKey(event: KeyboardEvent) {
this.values += (<HTMLInputElement>event.target).value + ' | ';
}
}
这里的组件必须知道事件有一个目标,它是一个输入元素,它有一个值。现在 v2:
@Component({
selector: 'key-up2',
template: `
<input #box (keyup)="onKey(box.value)">
<p>{{values}}</p>
`
})
export class KeyUpComponent_v2 {
values = '';
onKey(value: string) {
this.values += value + ' | ';
}
}
这里的模板 负责从它自己的结构中提取正确的值,组件只知道它正在获取一个字符串。现在想象一下:
您需要将 input
元素更改为 select
,以限制输入范围。每个版本有什么变化?只是模板,还是组件也必须更改?
您想测试处理方法。每个版本有多容易?您可以只传入一个字符串,还是必须使用适当结构的元素构建一个事件?
这就是关注点分离的真正含义 - 更改传播多远?您的系统的每个部分需要了解多少其他部分才能继续工作?每Wikipedia ,例如:
Of special value is the ability to later improve or modify one section of code without having to know the details of other sections, and without having to make corresponding changes to those sections.
然而,作为snorkpete建议,注意将 $event
传递给组件方法的保留仅适用于 $event
引用 DOM 事件的情况。在您使用 EventEmitter
引发您自己的事件的情况下,$event
将(很可能)是来自业务领域的对象,并且非常适合按原样使用。
关于javascript - 为什么在 Angular 中传递 $event(在处理 DOM 事件时)是一种可疑的做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43454395/
如果您想分享更多信息,可以在这里找到整个资源 指针: https://github.com/sergiotapia/DreamInCode.Net 基本上,我的API将为其他开发人员提供
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我不是 SCM 工具的经验丰富的用户,尽管我确信它们的用处,当然。 我在以前的工作中使用了一些不起眼的商业工具,在当前的工作中使用了 Perforce,并在我的小型个人项目中使用了 TortoiseS
所以我想知道一些我应该避免在 javascript 中做的事情以获得良好的 SEO 排名。在我的下一个站点中,我将广泛使用 jquery 和 javascript,但不想牺牲 SEO。那么您认为我应该
基本上,我想知道什么是避免 future CSS 代码出现问题和混淆的最佳方法... 像这样命名 CSS 属性: div#content ul#navigation div.float-left (真
我是一名优秀的程序员,十分优秀!