javascript - Vuejs:奇怪的类渲染
问题描述
我有以下设置和奇怪的类和名称渲染。
<component v-for="item in List"
:item="item"
:class="item.class"
:name="item.name"
</component>
let component = Vue.component('component', {
props: ['item'],
template: `<li :class="item.class">
{{ item.name }}
</li>`
}),
data: function (){
return {
List: [
{key:0, class:'someClass', name:'someName'},
]
}
},
})
使成为:
<li class="someClass someClass" name="someName"> someName </li>
到底哪里来的双“someClass”?为什么“列表”中的“名称”项目在这里是一个属性,因为它甚至没有被使用并且 v-bound 作为属性?“名称”是一个有点保留的属性吗?
预先感谢:)
解决方案
问题在这里:
<component v-for="item in List"
:item="item"
:class="item.class"
:name="item.name">
</component>
在本节中,您将绑定class
toitem.class
和属性name
到item.name
。Vue 会将这两者都应用到相应组件的外部元素上。
然后在该组件中添加:class="item.class"
,这将再次添加该类。
要解决此问题,只需从第一个模板中删除:class="item.class"
and 。:name="item.name"
<component v-for="item in List"
:item="item">
</component>
您在of中List
定义的也有点神秘,但您似乎在父组件模板的范围内使用它。data
component
根据评论更新:
class
可以通过两种方式在外部元素上设置A。它可以来自组件本身,在其模板内部,也可以从父模板中设置。
您选择哪一个取决于类的作用以及两个组件中的哪一个负责。两者都不一定对或错。
通常一个组件负责控制自己的样式,但一个常见的例外是控制布局的类。
例如,如果您有一个按钮组件,那么决定按钮是红色、绿色还是蓝色的类通常由组件本身管理。但是,如果该按钮需要在其父容器中右对齐,那么按钮组件可能不需要知道这一点。该对齐决策由父容器控制,它可以在按钮上设置一个类,而无需按钮参与。
推荐阅读
- amazon-web-services - 如何在运行 kops update cluster ${NAME} --yes 时修复“找不到“kope.io/k8s ...”的图像
- angularjs - process.nextTick 不是新 MicrophoneStream (microphone-stream.js:114) 中的函数,位于 identifyMicrophone (recognize-microphone.js:107)
- php - Laravel 多个路由参数
- api - 有没有办法在 Azure-DevOps Build Pipeline 中异步运行命令行?
- eyeshot - 如果(Mesh or Brep)的面是平面,如何得到它的法线向量
- cakephp-3.0 - 无法使用 $this->set('data', array received from find()) 将数组从控制器传递到 cakephp 3 中查看
- spring-boot - 将类路径中的外部 jar 添加到可执行 WAR 文件
- gitlab - 在 gitlab 上运行的 newman 超时,出现 503
- javascript - 一次清除所有表单字段,reactjs
- xml - 在 XML 的下拉命令中引用动态值