Browse Source

fix event bubbling within a single template

Evan Almloff 2 năm trước cách đây
mục cha
commit
4847789a83
2 tập tin đã thay đổi với 4 bổ sung4 xóa
  1. 3 3
      packages/core/src/arena.rs
  2. 1 1
      packages/core/src/virtual_dom.rs

+ 3 - 3
packages/core/src/arena.rs

@@ -175,10 +175,10 @@ impl VirtualDom {
 }
 
 impl ElementPath {
-    pub(crate) fn is_ascendant(&self, big: &&[u8]) -> bool {
+    pub(crate) fn is_decendant(&self, small: &&[u8]) -> bool {
         match *self {
-            ElementPath::Deep(small) => small.len() <= big.len() && small == &big[..small.len()],
-            ElementPath::Root(r) => big.len() == 1 && big[0] == r as u8,
+            ElementPath::Deep(big) => small.len() <= big.len() && *small == &big[..small.len()],
+            ElementPath::Root(r) => small.len() == 1 && small[0] == r as u8,
         }
     }
 }

+ 1 - 1
packages/core/src/virtual_dom.rs

@@ -396,7 +396,7 @@ impl VirtualDom {
 
                 // Remove the "on" prefix if it exists, TODO, we should remove this and settle on one
                 if attr.name.trim_start_matches("on") == name
-                    && target_path.is_ascendant(&this_path)
+                    && target_path.is_decendant(&this_path)
                 {
                     listeners.push(&attr.value);