1
0
Caleb Porzio 3 жил өмнө
parent
commit
681e8ebb89

+ 9 - 4
packages/alpinejs/src/directives/x-model.js

@@ -25,14 +25,18 @@ directive('model', (el, { value, modifiers, expression }, { effect, cleanup }) =
         }})
     })
 
+    // Register the listener removal callback on the element, so that
+    // in addition to the cleanup function, x-modelable may call it.
     if (! el._x_removeModelListeners) el._x_removeModelListeners = {}
+
     el._x_removeModelListeners[value || 'default'] = removeListener
     
     cleanup(() => el._x_removeModelListeners[value || 'default']())
 
     // Allow programmatic overiding of x-model.
     let evaluateSetModel = evaluateLater(el, `${expression} = __placeholder`)
-    let obj = {
+
+    let modelObject = {
         get() { 
             let result
             evaluate(value => result = value)
@@ -43,12 +47,13 @@ directive('model', (el, { value, modifiers, expression }, { effect, cleanup }) =
         },
     }
 
-    // This is a "named" binding (x-model:name).
     if (value) {
+        // This is a "named" binding (x-model:name).
         if (! el._x_models) el._x_models = {}
-        el._x_models[value] = obj
+        el._x_models[value] = modelObject
     } else {
-        el._x_model = obj
+        // This is a "normal" binding (x-model).
+        el._x_model = modelObject
     }
 
     el._x_forceModelUpdate = () => {

+ 3 - 1
packages/alpinejs/src/directives/x-modelable.js

@@ -18,9 +18,11 @@ directive('modelable', (el, { value, expression }, { effect, evaluate, evaluateL
         if (! el._x_model && ! el._x_models) return
 
         // Remove native event listeners as these are now bound with x-modelable.
+        // The reason for this is that it's often useful to wrap <input> elements
+        // in x-modelable/model, but the input events from the native input
+        // override any functionality added by x-modelable causing confusion.
         el._x_removeModelListeners[value || 'default']()
     
-        console.log(value)
         let outerGet = value ? el._x_models[value].get : el._x_model.get
         let outerSet = value ? el._x_models[value].set : el._x_model.set