在Angular中注册事件的最佳方式

时间:2015-10-21 00:14:24

标签: javascript angularjs mouseevent angular jqlite

据我所知,我们可以使用jqlite的.bind.on api或.addEventListener native api来注册事件。许多人正在使用jqlite api来注册事件,因为angular 1.x提供了这一点。但是Angular 2呢? Angular 2是否仍然提供jqlite api,或者我们应该坚持使用本机api,因为它更安全。

此外,关于.on.addEventListener之间的效果。哪一个更好?

2 个答案:

答案 0 :(得分:2)

您不应该直接在angular2应用程序中触摸DOM。无法在WebWorker或服务器端运行您的应用程序。请改用(event)="someHanlder()"表示法。请参阅this plunker

@Component({
    selector: 'some-component',
    // in "template" you can add handlers for child elements events
    template: `
        <button (click)="handleClickChild($event)">here</b>
    `,
    // in "host" you can add handlers for host element events
    host: {
        '(click)': 'handleClickHost($event)'
    }
})
class SomeComponent {
    handleClickHost(event) {
        // some logic
    }
    handleClickChild(event) {
        // some login
    }
}

答案 1 :(得分:1)

  

Angular 2是否仍然提供jqlite api,或者我们应该坚持使用本机api,因为它更安全。

Angular 2不提供jqlite。

  

另外,关于.on和.addEventListener之间的性能。哪一个更好

使用.addEventListener,因为这是DOM官方方式。