Skip to content

Commit

Permalink
+ [jsfm] supported inline event binding format
Browse files Browse the repository at this point in the history
  • Loading branch information
Jinjiang committed Apr 17, 2016
1 parent f41e946 commit d9da7dd
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 4 deletions.
30 changes: 28 additions & 2 deletions src/js-framework/lib/vm/__test__/directive.js
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ describe('bind events', () => {
manager = null
})
// - bind method to eventManager
it('add event to manager', () => {
it('add event to manager by type', () => {
vm._bindEvents(el, {click: 'foo'})
expect(manager.targets.length).equal(1)
var target = manager.targets[0]
Expand All @@ -304,16 +304,42 @@ describe('bind events', () => {
expect(el.event.length).equal(1)
expect(el.event[0]).equal('click')
})
// - bind method to eventManager
it('add event to manager by handler', () => {
vm._bindEvents(el, {click: function ($event) {
this.foo(this.a, $event)
}})
expect(manager.targets.length).equal(1)
var target = manager.targets[0]
expect(target).a('object')
expect(target.el).equal(el)
expect(target.events).a('object')
expect(target.events.click).a('function')
expect(el.event.length).equal(1)
expect(el.event[0]).equal('click')
})
// - fireEvent to call method
// - with right event info
it('fire event from manager', () => {
it('fire event from manager by type', () => {
var e = {}
vm._bindEvents(el, {click: 'foo'})
manager.fire(el, 'click', e)
expect(cb).calledOnce
expect(cb).calledOn(vm)
expect(cb).calledWith(e)
})
// - fireEvent to call method
// - with right event info
it('fire event from manager by handler', () => {
var e = {}
vm._bindEvents(el, {click: function ($event) {
this.foo(this.a, $event)
}})
manager.fire(el, 'click', e)
expect(cb).calledOnce
expect(cb).calledOn(vm)
expect(cb).calledWith(1, e)
})
})

// exports._bindSubVm(subVm, template)
Expand Down
7 changes: 5 additions & 2 deletions src/js-framework/lib/vm/directive.js
Original file line number Diff line number Diff line change
Expand Up @@ -220,8 +220,11 @@ export function _bindEvents(el, events) {
let i = keys.length
while (i--) {
const key = keys[i]
const handlerName = events[key]
this._setEvent(el, key, this[handlerName])
let handler = events[key]
if (typeof handler === 'string') {
handler = this[handler]
}
this._setEvent(el, key, handler)
}
}

Expand Down

0 comments on commit d9da7dd

Please sign in to comment.