broadcast.js
애플 릿 페이지 를 뛰 어 넘 는 이벤트 등록, 배포, 방송 체제.
코드 구현
var broadcast = {
  //      broadcast.on     。            broadcast.fire      
  //     :   isUniq   true,          ;     false      ,               
  on: function (name, fn, isUniq) {
    this._on(name, fn, isUniq, false)
  },
  //      broadcast.once      ,            
  once: function (name, fn, isUniq) {
    this._on(name, fn, isUniq, true)
  },
  _on: function (name, fn, isUniq, once) {
    var eventData
    eventData = broadcast.data
    var fnObj = {
      fn: fn,
      once: once
    }
    if (!isUniq && eventData.hasOwnProperty(name)) {
      eventData[name].push(fnObj)
    } else {
      eventData[name] = [fnObj]
    }
    return this
  },
  //     
  //     :name      ,data           
  fire: function (name, data, thisArg) {
    console.log('[broadcast fire]: ' + name, data)
    var fn, fnList, i, len
    thisArg = thisArg || null
    fnList = broadcast.data[name] || []
    if (fnList.length) {
      for (i = 0, len = fnList.length; i < len; i++) {
        fn = fnList[i].fn
        fn.apply(thisArg, [data, name])
        if (fnList[i].once) {
          fnList.splice(i, 1)
          i--
          len--
        }
      }
    }
    return this
  },
  data: {}
}
 
module.exports = broadcast업무 상의 응용 예
1 app. js 에 감청 로그 인 페이지 를 등록 하여 로그 인 에 성공 한 이벤트
절 차 는 다음 과 같다.
감청 로그 인 성공 이벤트 등록
//    broadcast
const {
  broadcast
} = require('utils/util')
//              
//  login    
broadcast.on('login_success', function () {
  wx.redirectTo({
    url: `/pages/${name}/index`
  })
})login 페이지 로그 인 성공 후 이 이벤트 실행
//    broadcast
var {
  broadcast
} = require('../../utils/util')
//      login_success
broadcast.fire('login_success')2. 상품 파손 신고 페이지 에 감청 신고 상품 코드 를 등록 하 는 사건
이 예 는 주로 broadcast. fire 를 사용 하여 인삼 을 전달 하 는 기능 을 나 타 냈 다.
//    broadcast
var {
  broadcast
} = require('../../utils/util')
//      setBrokenBikeCode
// "bikeid": "0100010010"
broadcast.fire('setBrokenBikeCode', '0100010010')//    broadcast
var {
  broadcast
} = require('../../utils/util')
...
function next (bikecode) {
   that.setData({
      bikecode
   })
}
...
//      setBrokenBikeCode
broadcast.on('setBrokenBikeCode', (bikecode) => {
   next(bikecode)
})3 적당 할 때 broadcast. on 을 사용 할 때 this 값 을 연결 해 야 합 니 다.
var that = this
broadcast.on('showRiding', function() {
 console.log(this) //   null
 that.showRiding()
})원인: 위의 코드 에서 보 듯 이 broadcast. on 에서 인쇄 된 this 값 은 null 이 고 이 함수 에서 this 가 가리 키 는 방향 이 명확 하지 않 기 때문에 값 은 null 입 니 다.보통 우 리 는 특별히 this 를 연결 한 후에 야 사용 할 수 있 습 니 다.
broadcast.on('showRiding', function() {
 this.showRiding()
}.bind(this))이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 관찰자 모드 쉽게 파악정의: 객체 간에 일대다 관계가 있을 때 관찰자 모드(Observer Pattern)를 사용합니다.예를 들어 대상이 수정되면 의존 대상을 자동으로 알려준다. 특징: 1. 관찰자와 피관찰자는 추상적인 결합이다. 2. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.