Javascript 输入和输出,如何使用它们来遵循Angular 2'的命名约定;s风格指南?
在我了解更多之前,我曾经将我的指令定义为:Javascript 输入和输出,如何使用它们来遵循Angular 2'的命名约定;s风格指南?,javascript,angular,typescript,angular2-styleguide,Javascript,Angular,Typescript,Angular2 Styleguide,在我了解更多之前,我曾经将我的指令定义为: ... inputs: [ 'onOutside' ] ... export class ClickOutsideDirective { @Output() onOutside: EventEmitter<any> = new EventEmitter(); } 但是,如果不允许在前缀上使用,我发现很难将@输入名称与输出名称分开 在将@Input和@Output命名为同一名称之前,如果在导出的类中同时声明这两个名称,则这将不再
...
inputs: [
'onOutside'
]
...
export class ClickOutsideDirective {
@Output() onOutside: EventEmitter<any> = new EventEmitter();
}
但是,如果不允许在前缀上使用,我发现很难将@输入
名称与输出
名称分开
在将@Input
和@Output
命名为同一名称之前,如果在导出的类中同时声明这两个名称,则这将不再有效,因为将引发错误
如果我将@输入
命名为外部
,将@输出
命名为外部点击
,那就没什么意义了,因为它们都是一样的东西outside
是调用outside单击时要执行的函数
另外,outsideClick
将不知道如果outside
不再是同一个名称,或者我遗漏了什么,该执行什么
我应该如何命名这里的@Input
和@Output
变量,以便它仍然可以工作,并且与第一个示例中的变量一样有意义
编辑:
用法示例:
<div clickOutside [exceptions]="['.toggler']" (outside)="doSomethingOnOutsideClick()"></div>
绝对不要在
上使用。在JavaScript中,事件也不会以
上的开头。只有事件处理程序才可以。JS中没有onClick
事件。事件名称为click
,如果将函数分配给onClick
,则在收到click
事件时将调用此函数
如果输入和输出属于同一类,请命名它们
@Input() name:any;
@Output() nameChange: EventEmitter<any> = new EventEmitter();;
如果使用@Input()
和@Output()
(首选方式),则不需要输入:[]
和输出:[]
。这是做同一件事的两种方法,如果你同时使用这两种方法,其中一种是多余的
要匹配浏览器命名方案,您可以做的是
(nameChange)="onNameChange($event)"
在接收到nameChange
事件时调用事件处理程序onNameChange
当事件不是输入/输出对的一部分时,您可以或应该省略更改
(loggedIn)="onLoggedIn($event)
但是如果outsideClick
是一个应该调用的函数,那么这就没有意义了,它不会改变..对不起,我不理解你的评论。如果Outside Click
是一个函数,您对的意思是什么。你能给你的问题添加一个代码示例吗?我更新了我的答案(在看到你的编辑之前)。你到底认为什么是没有意义的?(外部)
事件的语义是什么?可能是我搞糊涂了。。如果outside
是一个函数,那么我会通过outsideChange.emit()
发出它,对吗?所以从技术上讲,我可以只做@Output('outsideChange')outsideClick…
?我不明白你所说的“如果outside
是一个函数”是什么意思。您的问题不包含具有该名称的函数。你能补充一下这样的代码是什么样子吗?
(nameChange)="onNameChange($event)"
(loggedIn)="onLoggedIn($event)