将数据从 Rails 视图传递到 webpacker 中的 VueJS 组件

2023-12-10

我正在尝试摆弄 Rails 5.1 的新 webpacker gem 以及 VueJS,但无法让我的 erb 视图将数据传递给 VueJS 组件...

假设我有一个用户显示视图

# view/users/show.html.erb
<%= javascript_pack_tag "user-card" %>
<%= content_tag :div,
  id: "user-card",
  data: {
    username: @user.name
  } do %>
<% end %>

还有我的 JavaScript:

// app/javascript/packs/user-card.js
require("user-card")

// app/javascript/user-card/index.js
import Vue from 'vue/dist/vue.esm'
import UserCard from './components/UserCard'

document.addEventListener('DOMContentLoaded', () => {
  let element = document.getElementById("user-card")
  let username = element.dataset.username
  console.log(username); // => "pecpec"

  const app = new Vue({
    el: element,
    template: '<UserCard/>',
    components: { UserCard },
    data () {
      return { username }
    }
  })


// app/javascript/user-card/components/UserCard.vue
<template>
  <div>
    <h3>Hello {{ username }}</h3>
  </div>
</template>

<script>
export default {
  props: ['username'],
  data () {
    return {
      username: ""
    }
  }
}
</script>

到目前为止,我已经花了几个小时来解决这个问题,但我的所有尝试都没有成功。我尝试将数据作为道具传递给组件:props: ['username'],安装元件

Vue.component(UserCard, {
  props: ['username']
  // or
  data () {
    return { username: username }
  }
})

...但这也不起作用

更新: 我失踪了props: ['username']在组件中并相应地更新了上面的代码,尽管这似乎并没有带来什么不同。还是没有运气!


It works!这是我的解决方案...不确定这是否是规范的方法,但它仍然有效。现在看起来非常明显……希望这会帮助其他人。这是完整更新的代码:

# view/users/show.html.erb
<%= javascript_pack_tag "user-card" %>
<%= content_tag :div,
  nil,
  id: "user-card",
  data: { username: @user.name }
 %>
// app/javascript/packs/user-card.js
require("user-card")

// app/javascript/user-card/index.js
import Vue from 'vue/dist/vue.esm'
import UserCard from './components/UserCard'

document.addEventListener('DOMContentLoaded', () => {
  let element = document.getElementById("user-card")
  let username = element.dataset.username

  const app = new Vue({
    el: element,
    data: { username: username },
    template: '<UserCard :username="username"/>',
    components: { UserCard }
  })
})

// app/javascript/user-card/components/UserCard.vue
<template>
  <div>
    <h3>Hello {{ username }}</h3>
  </div>
</template>

<script>
export default {
  props: ['username']
}
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将数据从 Rails 视图传递到 webpacker 中的 VueJS 组件 的相关文章

随机推荐

  • 两个带有 count 的语句相除返回零

    我是 SQL 新手 使用 SQLiteStudio 并且正在尝试使用一些聚合函数 我想找到数据子集中个体数量小于 575 的比例 但查询始终返回零 SELECT A B 100 FROM SELECT COUNT AS A FROM Mal
  • 使用 RequestBody 的 POST 请求不起作用

    在下面的示例中 我使用 POST 和 GET 方法 post 是初始化一个变量 GET 是获取这个变量 我使用 Postman 来发出请求 我收到错误 RequestBody value val cant resolve method va
  • 使用自定义属性有效吗?

    我想取消任何链接并为每个链接添加额外的属性 下面是我是如何实现这一目标的 function anularEnlaces nav a each function var href this attr href var id this attr
  • C# 按字母顺序和长度对 Arraylist 字符串进行排序

    我正在尝试排序ArrayList of String Given A C AA B CC BB Arraylist Sort gives A AA B BB C CC 我需要的是 A B C AA BB CC ArrayList list
  • +0和-0一样吗?

    阅读通过ECMAScript 5 1 规范 0 and 0是杰出的 那么为什么呢 0 0评估为true JavaScript 使用IEEE 754 标准来表示数字 从维基百科 签名零为零并带有相关符号 在普通算术中 0 0 0 然而 在计算
  • Android 应用程序 - 如何获取联系人的生日

    我正在开发一个 Android 应用程序 我需要将每个联系人的生日与当前日期进行匹配 如果是的话 则处理一些业务逻辑 这需要完整的联系人详细信息 我找到了分别读取联系人生日或联系人本身的方法 但对如何将两者结合起来感到困惑 有人可以提供一些
  • 如何用段落标签包围所有文本片段? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想在任何文本项周围放置段落标签 因此应该避免表格和其他元素 我怎么做 我想它可以用某种方式制成preg replace 以下是一些可以帮助您完成您想做的事情的函数 nl2p T
  • Yii2 gridview - 模式仅在单击第一行时显示

    我正在使用 kartik grid GridView 和 kartik grid ExpandRowColumn 来显示摘要信息 在 ExpandRowColumn 上 我有另一个 gridview 来列出详细信息 这部分工作正常 在 Ex
  • swift 3 Playground 中的回调[重复]

    这个问题在这里已经有答案了 您好 我正在尝试在操场上执行这行代码 但得到任何响应输出 我的代码如下 func testCallbackEmpty callback escaping gt Void DispatchQueue main as
  • 如何在 WordPress 插件中使用多媒体上传器?

    我尝试在 WordPress 插件中添加多重上传选项 我在插件中重复了此代码 两次 仅更改了 id 名称
  • 我可以使用反射访问 ItemsControl 的 ItemsHost 吗?

    我正在创建自定义ItemsControl这是源自DataGrid 我需要访问 ItemsHost 这是Panel实际上包含行DataGrid 我见过一些丑陋的技巧来做到这一点 但我认为它们比使用反射更糟糕 那么我可以使用反射访问 Items
  • 如何使用/导入http模块?

    我一直在玩Angular 2 快速入门 如何在 Angular 2 中使用 导入 http 模块 我看过Angular 2 Todo s js 但它不使用 http 模块 我已经添加 ngHttp angular http to depen
  • to_number Oracle SQL 中数字格式的动态长度

    我有一个表 其中的数字存储为varchar2和 作为小数点分隔符 例如 5 92843 我想使用 来计算这些数字 因为这是系统默认值 并且使用了以下内容to number去做这个 TO NUMBER number 99999D9999 NL
  • Neo4j 桌面打开时出错 - “无法读取未定义的属性“名称”

    我有一个运行 Windows Server 2016 的盒子 我在这里找到了有关 MAC 的问题的答案 neo4j 初始化错误 TypeError 无法读取未定义的属性 名称 这个答案似乎在 Windows 中不起作用 因为删除 AppDa
  • PHP 通过键和值创建数组

    我在下面的 PHP 代码中有一个数组 我想将该数组转换为按数据值分组 简化数组总是很困难 Array 0 gt Array video id gt 14 video title gt test1 video category name gt
  • 如何从聚合物组件访问父模型

    我将 my app 作为 index html 文件中的主要应用程序组件 并使用 model dart 作为其模型 这是我的应用程序模型 my app 以 my component 作为其内容 当用户与 my component 交互时 我
  • 如何在Python中获取字符串的大小(长度)

    例如 我得到一个字符串 str please answer my question 我想把它写入一个文件 但在将字符串写入文件之前我需要知道字符串的大小 我可以使用什么函数来计算字符串的大小 如果你正在谈论字符串的长度 你可以使用len g
  • 如何自动将当前路由中的特定值添加到所有生成的链接?

    我的 URL 中有网站文化 如下所示 routes MapRoute Default language controller action id languageDefaults languageConstraints 它的工作方式就像一个
  • 结合 lapply、svyby、svyratio 计算许多具有置信区间的比率

    我正在使用surveyR 中的包可与美国人口普查局的 PUMS 人口数据集配合使用 我为每个广泛的行业创建了一个布尔值和一个字符变量MigrationStatus具有三个值 Stayed Left Entered 我想按移民身份检查每个行业
  • 将数据从 Rails 视图传递到 webpacker 中的 VueJS 组件

    我正在尝试摆弄 Rails 5 1 的新 webpacker gem 以及 VueJS 但无法让我的 erb 视图将数据传递给 VueJS 组件 假设我有一个用户显示视图 view users show html erb 还有我的 Java