Skip to content

Commit acdc3c4

Browse files
Hanks10100yyx990803
authored andcommitted
feat($event): support binding parameters on event handler within weex recycle-list
1 parent 2a1ce0d commit acdc3c4

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed

Diff for: src/core/vdom/helpers/update-listeners.js

+11-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
/* @flow */
22

33
import { warn } from 'core/util/index'
4-
import { cached, isUndef } from 'shared/util'
4+
import { cached, isUndef, isPlainObject } from 'shared/util'
55

66
const normalizeEvent = cached((name: string): {
77
name: string,
88
once: boolean,
99
capture: boolean,
10-
passive: boolean
10+
passive: boolean,
11+
handler?: Function,
12+
params?: Array<any>
1113
} => {
1214
const passive = name.charAt(0) === '&'
1315
name = passive ? name.slice(1) : name
@@ -47,11 +49,15 @@ export function updateListeners (
4749
remove: Function,
4850
vm: Component
4951
) {
50-
let name, cur, old, event
52+
let name, def, cur, old, event
5153
for (name in on) {
52-
cur = on[name]
54+
def = cur = on[name]
5355
old = oldOn[name]
5456
event = normalizeEvent(name)
57+
if (isPlainObject(def)) {
58+
cur = def.handler
59+
event.params = def.params
60+
}
5561
if (isUndef(cur)) {
5662
process.env.NODE_ENV !== 'production' && warn(
5763
`Invalid handler for event "${event.name}": got ` + String(cur),
@@ -61,7 +67,7 @@ export function updateListeners (
6167
if (isUndef(cur.fns)) {
6268
cur = on[name] = createFnInvoker(cur)
6369
}
64-
add(event.name, cur, event.once, event.capture, event.passive)
70+
add(event.name, cur, event.once, event.capture, event.passive, event.params)
6571
} else if (cur !== old) {
6672
old.fns = cur
6773
on[name] = old

Diff for: src/platforms/weex/entry-framework.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,10 @@ const jsHandlers = {
122122
}
123123
}
124124

125-
function fireEvent (instance, nodeId, type, e, domChanges) {
125+
function fireEvent (instance, nodeId, type, e, domChanges, params) {
126126
const el = instance.document.getRef(nodeId)
127127
if (el) {
128-
return instance.document.fireEvent(el, type, e, domChanges)
128+
return instance.document.fireEvent(el, type, e, domChanges, params)
129129
}
130130
return new Error(`invalid element reference "${nodeId}"`)
131131
}

Diff for: src/platforms/weex/runtime/modules/events.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ function add (
88
event: string,
99
handler: Function,
1010
once: boolean,
11-
capture: boolean
11+
capture: boolean,
12+
passive?: boolean,
13+
params?: Array<any>
1214
) {
1315
if (capture) {
1416
console.log('Weex do not support event in bubble phase.')
@@ -26,7 +28,7 @@ function add (
2628
}
2729
}
2830
}
29-
target.addEvent(event, handler)
31+
target.addEvent(event, handler, params)
3032
}
3133

3234
function remove (

0 commit comments

Comments
 (0)