角度 – 使用EventEmitter传递参数

前端之家收集整理的这篇文章主要介绍了角度 – 使用EventEmitter传递参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个指令来初始化一个在DOM元素上排序的jQueryUI. jQueryUI可排序也有一组在某些操作上触发的回调事件.例如,当您为 startstop排序元素.

我想通过emit()函数从这样的事件传递返回参数,所以我可以看到在我的回调函数中发生了什么.我没有找到一种通过EventEmiiter传递参数的方法.

我目前有以下

我的指令:

  1. @Directive({
  2. selector: '[sortable]'
  3. })
  4. export class Sortable {
  5. @Output() stopSort = new EventEmitter();
  6.  
  7. constructor(el: ElementRef) {
  8. console.log('directive');
  9. var options = {
  10. stop: (event,ui) => {
  11. this.stopSort.emit(); // How to pass the params event and ui...?
  12. }
  13. };
  14.  
  15. $(el.nativeElement).sortable(options).disableSelection();
  16. }
  17. }

这是我的组件,它使用指令发出的事件:

  1. @Component({
  2. selector: 'my-app',directives: [Sortable],providers: [],template: `
  3. <div>
  4. <h2>Event from jQueryUI to Component demo</h2>
  5.  
  6. <ul id="sortable" sortable (stopSort)="stopSort(event,ui)">
  7. <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 1</li>
  8. <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 2</li>
  9. <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 3</li>
  10. </ul>
  11. </div>
  12. `
  13. })
  14. export class App {
  15. constructor() {
  16.  
  17. }
  18.  
  19. stopSort(event,ui) { // How do I get the 'event' and 'ui' params here?
  20. console.log('STOP SORT!',event);
  21. }
  22. }

如何在我的stopSort()函数获取事件和ui参数?

这是我迄今为止所做的一个演示:http://plnkr.co/edit/5ACcetgwWWgTsKs1kWrA?p=info

EventEmitter支持一个参数,它作为$event传递给您的事件处理程序.

将参数传递给发送时将包含在事件对象中:

  1. this.stopSort.emit({ event:event,ui: ui });

然后,当您处理事件时,请使用$event:

  1. stopSort($event) {
  2. alert('event param from Component: ' +$event.event);
  3. alert('ui param from Component: ' + $event.ui);
  4. }

Demo Plnkr

猜你在找的Angularjs相关文章