فهرست منبع

add $arguments variable in component events inline statement #1945

rhyzx 10 سال پیش
والد
کامیت
7d5abe8835
1فایلهای تغییر یافته به همراه9 افزوده شده و 4 حذف شده
  1. 9 4
      src/instance/internal/events.js

+ 9 - 4
src/instance/internal/events.js

@@ -32,13 +32,18 @@ export default function (Vue) {
 
   function registerComponentEvents (vm, el) {
     var attrs = el.attributes
-    var name, handler
     for (var i = 0, l = attrs.length; i < l; i++) {
-      name = attrs[i].name
+      let name = attrs[i].name
       if (eventRE.test(name)) {
         name = name.replace(eventRE, '')
-        handler = (vm._scope || vm._context).$eval(attrs[i].value, true)
-        vm.$on(name.replace(eventRE), handler)
+        const scope = vm._scope || vm._context
+        const handler = scope.$eval(attrs[i].value, true)
+        vm.$on(name.replace(eventRE), function (...args) {
+          scope.$arguments = args
+          const result = handler.apply(this, args)
+          scope.$arguments = null
+          return result
+        })
       }
     }
   }