本文整理匯總了TypeScript中nerv-utils.MapClass類的典型用法代碼示例。如果您正苦於以下問題:TypeScript MapClass類的具體用法?TypeScript MapClass怎麽用?TypeScript MapClass使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了MapClass類的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: attachEvent
export function attachEvent (
domNode: Element,
eventName: string,
handler: Function
) {
eventName = fixEvent(domNode, eventName)
/* istanbul ignore next */
if (eventName === ONPROPERTYCHANGE) {
processOnPropertyChangeEvent(domNode, handler)
return
}
let delegatedRoots = delegatedEvents.get(eventName)
if (unbubbleEvents[eventName] === 1) {
if (!delegatedRoots) {
delegatedRoots = new MapClass()
}
const event = attachEventToNode(domNode, eventName, delegatedRoots)
delegatedEvents.set(eventName, delegatedRoots)
if (isFunction(handler)) {
delegatedRoots.set(domNode, {
eventHandler: handler,
event
})
}
} else {
if (!delegatedRoots) {
delegatedRoots = {
items: new MapClass()
}
delegatedRoots.event = attachEventToDocument(
doc,
eventName,
delegatedRoots
)
delegatedEvents.set(eventName, delegatedRoots)
}
if (isFunction(handler)) {
delegatedRoots.items.set(domNode, handler)
}
}
}
示例2: patchKeyedChildren
//.........這裏部分代碼省略.........
// Mark all nodes as inserted.
for (i = 0; i < bLeft; i++) {
sources[i] = -1
}
let moved = false
let pos = 0
let patched = 0
// When sizes are small, just loop them through
if (bLeft <= 4 || aLeft * bLeft <= 16) {
for (i = aStart; i <= aEnd; i++) {
aNode = a[i]
if (patched < bLeft) {
for (j = bStart; j <= bEnd; j++) {
bNode = b[j]
if (aNode.key === bNode.key) {
sources[j - bStart] = i
if (pos > j) {
moved = true
} else {
pos = j
}
patch(aNode, bNode, dom, context, isSvg)
patched++
a[i] = null as any
break
}
}
}
}
} else {
const keyIndex = new MapClass()
for (i = bStart; i <= bEnd; i++) {
keyIndex.set(b[i].key, i)
}
for (i = aStart; i <= aEnd; i++) {
aNode = a[i]
if (patched < bLeft) {
j = keyIndex.get(aNode.key)
if (j !== undefined) {
bNode = b[j]
sources[j - bStart] = i
if (pos > j) {
moved = true
} else {
pos = j
}
patch(aNode, bNode, dom, context, isSvg)
patched++
a[i] = null as any
}
}
}
}
if (aLeft === aLength && patched === 0) {
unmountChildren(a, dom)
while (bStart < bLeft) {
node = b[bStart]
bStart++
attachNewNode(dom, createElement(node, isSvg, context), null)
示例3: detachEvent
export function detachEvent (
domNode: Element,
eventName: string,
handler: Function
) {
eventName = fixEvent(domNode, eventName)
if (eventName === ONPROPERTYCHANGE) {
return
}
const delegatedRoots = delegatedEvents.get(eventName)
if (unbubbleEvents[eventName] === 1 && delegatedRoots) {
const event = delegatedRoots.get(domNode)
if (event) {
domNode.removeEventListener(parseEventName(eventName), event.event, false)
/* istanbul ignore next */
const delegatedRootsSize = delegatedRoots.size
if (delegatedRoots.delete(domNode) && delegatedRootsSize === 0) {
delegatedEvents.delete(eventName)
}
}
} else if (delegatedRoots && delegatedRoots.items) {
const items = delegatedRoots.items
if (items.delete(domNode) && items.size === 0) {
doc.removeEventListener(
parseEventName(eventName),
delegatedRoots.event,
false
)
delegatedEvents.delete(eventName)
}
}
}