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에 따라 라이센스가 부여됩니다.