angular wrap jquery插件如何处理很多事件

时间:2017-03-21 10:12:17

标签: jquery angular jstree angular-cli

我正在尝试将jquery插件jstree包装到角度组件中。我的代码如下。我有基本的演示文稿,但我想知道包装jstree发出的许多事件的最佳方法是什么。

我可以复制@output'onSelection'发射器并拥有许多不同的事件发射器(onLoaded,onReady,onLoadNode等),但不确定这是否是正确/惯用的处理方式。 Jstree对每个事件都有不同的参数,因此不确定如何处理单个发射器,其中不同的事件将具有不同数量的args,或者即使这是一种合理的方法。

版本:“@ angular / cli”:“1.0.0-rc.2”,“@ angular / compiler-cli”:“^ 2.4.0”,“jstree”:“^ 3.3.3”

import {Component, OnInit, ViewChild, ElementRef, AfterViewInit, Input, Output, EventEmitter} from '@angular/core';
import * as jQuery from 'jquery';
import 'jstree';

@Component({
  selector: 'angular-jstree',
  templateUrl: 'angular-jstree.component.html',
  styleUrls: ['angular-jstree.component.css'] ,
})
export class AngularJstreeComponent implements OnInit, AfterViewInit {

  @ViewChild('jstree') element: ElementRef;

  @Input() jstreeData : Object = {};

  @Output()  onSelection: EventEmitter<Object> = new EventEmitter<Object>();

  constructor() { }

  ngOnInit() {
  }

  ngAfterViewInit() {
    jQuery(this.element.nativeElement).jstree(this.jstreeData);

    jQuery(this.element.nativeElement).on("select_node.jstree", (node, selected, event) => {
      this.onSelection.emit({node: node, selected: selected, event: event});
    });
  }

}

0 个答案:

没有答案