trees.js 1.67 KB
// Parser/trees/trees.js
Component({
  properties: {
    nodes: {
      type: Array,
      value: []
    },
    controls: {
      type: Object,
      value: {}
    }
  },
  methods: {
    //冒泡事件
    playEvent(e) {
      this.triggerEvent('play', e.currentTarget.dataset.id, {
        bubbles: true,
        composed: true
      });
    },
    previewEvent(e) {
      if (!e.target.dataset.hasOwnProperty('ignore')) {
        this.triggerEvent('preview', e.currentTarget.dataset.src, {
          bubbles: true,
          composed: true
        });
      }
    },
    tapEvent(e) {
      this.triggerEvent('linkpress', e.currentTarget.dataset.href, {
        bubbles: true,
        composed: true
      });
    },
    errorEvent(e) {
      //尝试加载其他源
      if (!this.data.controls[e.currentTarget.dataset.id] && e.currentTarget.dataset.source.length > 1) {
        this.data.controls[e.currentTarget.dataset.id] = {
          play: false,
          index: 1
        }
      } else if (this.data.controls[e.currentTarget.dataset.id] && e.currentTarget.dataset.source.length > (this.data.controls[e.currentTarget.dataset.id].index + 1)) {
        this.data.controls[e.currentTarget.dataset.id].index++;
      }
      this.setData({
        controls: this.data.controls
      })
      this.triggerEvent('error', {
        target: e.currentTarget,
        message: e.detail.errMsg
      }, {
        bubbles: true,
        composed: true
      });
    },
    //内部方法:加载视频
    _loadVideo(e) {
      this.data.controls[e.currentTarget.dataset.id] = {
        play: true,
        index: 0
      }
      this.setData({
        controls: this.data.controls
      })
    },
  }
})