element-ui
InfiniteScroll
在线地址
https://codesandbox.io/p/sandbox/hopeful-knuth-twdttl?file=%2...
我的使用方式
v-infinite-scroll="load":infinite-scroll-immediate="false"
但是还是触发了 load
方法
默默打开 element-ui
源码调试了一下packages/infinite-scroll/src/main.js
line:69
let value = el.getAttribute(`infinite-scroll-${key}`);
发现这个 value 永远都是 true
,但是我明明传递的是 false
啊
后来看了 vue
源码里面 对 dom
的 attribute
有这样一段处理
src/platforms/web/runtime/modules/attrs.js
line:68
if (isFalsyAttrValue(value)) { el.removeAttribute(key)} else { ...}
false
的值会被移除掉
导致 element-ui
获取到的 value
永远是 null
就取了默认值 true
请教一下各位大佬,这是 element-ui
的 bug
还是我哪里处理的有问题?
希望能解释一下这个问题
这里有几个因素:
1.InfiniteScroll
是一个指令,指令可以附加到任何元素上,指令可以获取绑定值的具体类型。
2.vue
里不显示定义成props
的属性都会成为元素的attribute
附加到元素上,而原生DOM的attribute
都是字符,不存在布尔、数值这些类型,所以绑定属性【不是props】的值都只能是字符,如果你用v-bind
绑定属性那么vue
也会将其转成字符附加到DOM上【除开false
】
3.InfiniteScroll
拓展的那些属性其实是DOM的attribute
,并非prop
,element-ui文档里并没有对这个进行说明而且还显眼的写上了类型,大多数第一直觉都会将其当做prop
来传递,出问题了第一时间可能也不容易联想到第2点,文档里最好是说明是字符'false'|'true'
这样更好一点
综合以上原因,它不是bug,但是非要甩锅的话,锅在element-ui
吧我觉得
你这里不是用 v-bind
吗,去掉就可以了
这个问题涉及到 Vue.js 和 element-ui 的一个特定行为。首先,让我们解释一下 Vue.js 在处理 DOM 属性时是如何工作的。
在 Vue.js 中,当你在模板中为元素设置一个属性,Vue.js 会将该属性的值绑定到该元素的 v-bind
属性上。例如,如果你写 v-bind:class="{ active: isActive }"
,Vue.js 实际上会将这个属性转换成一个表达式,像这样:v-bind:class="{ active: isActive }"
实际上会被转换成一个表达式,看起来像这样:v-bind:class="isActive ? 'active' : ''"
。这意味着如果 isActive
是 false
,那么这个类就会被移除。
现在让我们回到你的问题。你正在使用 element-ui
的 v-infinite-scroll
指令,并且你正在尝试传递一个 false
值给它。然而,你发现这个值似乎被移除了。这实际上是因为 Vue.js 在处理这个属性时将其转换成了表达式,并且由于 false
在这个上下文中被视为 falsy(在 JavaScript 中,falsy 值包括 false
、0
、""
、null
、undefined
和 NaN
),所以这个属性被移除了。
因此,这不是 element-ui
的 bug,而是 Vue.js 的预期行为。如果你想在 v-infinite-scroll
指令中传递一个 false
值并希望它被保留,你可能需要使用一个不同的方法来实现这一点,或者找到一种方法来避免 Vue.js 将这个属性转换成一个表达式。
请注意,虽然 Vue.js 提供了强大的数据绑定功能,但有时候你可能需要更精细地控制 DOM 元素的属性。在这种情况下,你可能需要直接操作 DOM 元素,或者使用一些第三方的库或插件来帮助你实现这个目标。
这是GCC的bug吗?
在此输入图像说明发送查询https://graph.Microsoft.com/v1.0/groups/delta?$select=DisplayName,securityIdentifier(在Microsoft graph API explorer中),并接收内部服务器错误{“错误”:{“代码”:“Service_InternalServerError”,“消息”:“遇到内部服务器错误”,“I
我一直在尝试使用log类来捕获一些使用本地存储的奇怪的设备特定故障。当我进入Log类并跟踪代码时,我注意到了一个bug。 同时,这是一个Bug,还是我从用户的角度不理解它的功能?
数据结构如下 tabledata: [ 效果图 能否实现这样的效果呢
在线地址, https://stackblitz.com/edit/vue-c98wtb?file=src%2Fcomponents%... 先把数据往下滚动一下,然后再点击 Recovery 按钮, 视图没有更新
请问有没有组件或者方法能实现类似的窗口? 尝试过使用element ui的Dialog 对话框但是效果不满意。