在 vue.js(和 webpack)中结合 v-bind 和 v-for 忽略 v-bind

Posted

技术标签:

【中文标题】在 vue.js(和 webpack)中结合 v-bind 和 v-for 忽略 v-bind【英文标题】:Combine v-bind and v-for in vue.js (and webpack) v-bind ignored 【发布时间】:2018-05-15 23:08:03 【问题描述】:

我想将内联样式绑定到包含 v-for 的 div。但它似乎总是忽略 v-bind。这是模板和数据。

<template>
    <div id="app">
      <div v-bind:style="styleObject" v-for="collection in collections" :key="collection.id">       
       <a v-bind:href="collection.pageurl">  
         <h1> collection.title </h1>
         <h2> collection.author </h2>             
      </a>   
    </div>
    <router-view/>
    </div>
    </template>

...这是同一个 .vue 文件中的脚本代码:

export default 
  name: "app",
  styleObject: 
    background: "red",
    borderColor: "red"
  ,
  //Pass data to the app.
  firebase: 
    collections: collectionsRef
  
;

背景图片将来自表格,但我什至无法让这个简单的静态示例工作。除了 v-bind 被忽略之外,一切都按预期呈现。当我在 chrome 中检查时,style= 甚至不在 div 标签中。我从 vue.js 文档中复制了 v-bind 代码。我正在使用带有 webpack 的 vue-cli。

没有错误信息,代码编译正常。 v-bind 被忽略了。

【问题讨论】:

【参考方案1】:

styleObject 必须是组件数据或计算属性的一部分。我假设 collectionsRef 对您来说工作正常,尽管根据发布的代码它似乎是未定义的。

export default 
  name: "app",
  data()
    return 
      styleObject: 
        background: "red",
        borderColor: "red"
      , 
    
  ,
  //Pass data to the app.
  firebase: 
    collections: collectionsRef
  
;

【讨论】:

谢谢,这行得通。我看了一遍,从未见过这种语法。 (collectionsRef 在别处被定义为来自 firebase 项目的数据)。 您使用的是组件,因此 data 必须是返回对象的函数。这在documentation on components 的前几段中进行了讨论。如果您还没有阅读它,那么文档非常好。【参考方案2】:

让你的代码像这样。

data : return
   styleObject: 
    background: "red",
    borderColor: "red"
  

【讨论】:

您能详细说明一下吗? 把你的 JS 发给我

以上是关于在 vue.js(和 webpack)中结合 v-bind 和 v-for 忽略 v-bind的主要内容,如果未能解决你的问题,请参考以下文章

VUE学习笔记:20.模块化开发之webpack结合VUE使用

如何将 Vue.js 与 Flask 结合使用?

vue.js v-for 在两个表行上

Vue.js 如何使用 v-model 和计算属性以及复选框来镜像输入字段

Vue.js 和 Webpack,如何构建组件以实现可移植性

如何在生产 Vue.js 中禁用源映射或调试模式 - Webpack