Evan You 12 лет назад
Родитель
Сommit
2a180ffd2a
2 измененных файлов с 12 добавлено и 1 удалено
  1. 1 1
      src/compiler.js
  2. 11 0
      test/unit/specs/directives.js

+ 1 - 1
src/compiler.js

@@ -707,7 +707,7 @@ CompilerProto.addListener = function (listener) {
                     target
                 while (i--) {
                     target = delegator.targets[i]
-                    if (e.target === target.el && target.handler) {
+                    if (target.el.contains(e.target) && target.handler) {
                         target.handler(e)
                     }
                 }

+ 11 - 0
test/unit/specs/directives.js

@@ -490,6 +490,17 @@ describe('UNIT: Directives', function () {
             assert.ok(triggered)
         })
 
+        it('delegation should work', function () {
+            var triggered = false,
+                child = document.createElement('div')
+            dir.el.appendChild(child)
+            dir.update(function () {
+                triggered = true
+            })
+            child.dispatchEvent(mockMouseEvent('click'))
+            assert.ok(triggered)
+        })
+
         it('should wrap the handler to supply expected args', function () {
             var vm = dir.binding.compiler.vm, // owner VM
                 e  = mockMouseEvent('click'), // original event