为什么自定义元素不支持将属性作为对象?

2023-12-14

我试图将自定义元素中的数据属性作为对象传递,但在接收 AttachedCallback 方法内部时以字符串形式获取值“[object object]”。

那么任何人都可以帮助我弄清楚如何将属性作为自定义元素(Web 组件)中的对象获取。

代码示例

<script>
class myElements extends HTMLElement {
    createdCallback() {
        this.innerHTML = `<h1>Hello</h1>`;
    }
    attachedCallback() {
        console.log(this.getAttribute('data'));
    }
}

 document.registerElement('my-element', myElements);
</script>

自定义元素标签

<script>
    var object = { key1: 111, key2: 222, key3: function(){return "hi"}, key4:[1,2,3]};

   function changeHandler() {
    page('/default', function() {
        // some logic to decide which route to redirect to
        if (admin) {
            page.redirect('/admin');
        } else {
            page.redirect('/guest');
        }
    });
}

</script>

<my-element data="object" onchange="changeHandler"></my-element>

注意:假设<my-element>是一个下拉菜单,让用户可以选择某个值。

解决方案:自定义元素规范中仍然没有本机解决方案(v0 and v1).

由于自定义元素不支持数据绑定,因此我们需要一个糖化层(例如,Polymer 或 SkateJS),正如@tony 在评论中提到的那样。


尝试将对象转换为 JSON 字符串,

var object = { key1: 111, key2: 222};
JSON.stringify(object);

然后当你想要获取值时,将其解析回对象

JSON.parse(this.getAttribute('data'));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么自定义元素不支持将属性作为对象? 的相关文章

  • 使用 PHP 和 MySQL 的服务器端事件

    我正在使用 PHP 和 MySQL 构建一个 非常基本的 应用程序 该应用程序的目的是在网页上显示 实时 数据交易 这些交易来自于transactionsMySQL 数据库中的表 到目前为止 我可以在网页上检索并显示数据 不过我期待看到数据
  • 将 next.js 与纱线工作区结合使用

    今天遇到了这样的项目结构的复杂情况 packages app pages package json ui kit pages package json shared babelrc package json root lvl 包 json
  • require('babel/register') 不起作用

    我在客户端上有一个用 ES6 编写的同构应用程序Babel 转译器 http babeljs io 我希望我的 Express 服务器具有与客户端代码相同的 ES6 语法 很遗憾require babel register 不起作用 服务器
  • 在 iPad 上调试 Javascript

    我想知道人们是否找到了任何有用的工具来在未越狱的 iPad 上调试 javascript 这是一款用于工作的 iPad 因此无法越狱 通过一些繁琐的步骤 我已经在 iPad 上运行了 firebug lite 但是我的 javascript
  • 将 Json 数据返回给 Ajax 调用

    我在 MVC 中有一个方法 我将其发布到它 并且我需要返回一些数据以进行处理 这是我发布到的 MVC 方法 返回值是 json 数据 HttpPost public JsonResult GetCalculateAmortizationSc
  • 在 Node.js 中包含另一个文件中的 JavaScript 类定义

    我正在为 Node js 编写一个简单的服务器 并且使用我自己的类 名为User看起来像 function User socket this socket socket this nickname null just the typical
  • 如何精确缩放已翻译的d3地图

    我有一张已翻译的地图 以使其正确适合画布 我正在尝试实现一种缩放它的方法 它确实有效 但是当您放大时它会远离中心 而不是以鼠标甚至画布为中心 这是我的代码 function map data total views var xy d3 ge
  • Cordova SQLite 保存 BLOB

    我的 Cordova SQLite 插件有问题 如何将 BLOB 图像保存到 SQLite 我在 JS 中有 BLOB 对象 Blob size 96874 type image jpeg proto Blob length 1 我试图拯救
  • 如何针对 IE 进行优化?

    我有一个 JS 密集型应用程序 它在 IE 中运行缓慢 我将花费大约一周的时间来优化 IE 并且我想要一些关于尝试的方向 我发现这个线程引用Drip https ieleak svn sourceforge net svnroot iele
  • 通过 Javascript 更改 Webkit 属性?

    请帮助我 可能是因为我对 CSS 动画和 Javascript 相当陌生 但我使用的代码应该更改它的属性 当我运行代码时 它会执行代码中的所有其他操作 除了更改所需 div 的 CSS 属性 我已经尝试了所有这四种方法 但似乎都不起作用 它
  • Javascript 制作音频 blob

    我正在测试 html 音频标签 我想制作音频 blob url 就像 youtube 或 vimeo 那样 并将其添加到 src 开始播放音频 我一直在测试new Blob and URL createObjectURL 但我不知道如何使用
  • 如何显示/隐藏jsf组件

    在我的一个 JSF 应用程序中 顶部的标题部分包含 selectOneMenu 底部的内容部分显示过滤器组件 默认情况下 应用程序首先在顶部显示 selectOneMenu 数据 在底部显示相应的 Filter 信息 如果用户选择不同的se
  • dc lineChart 单击时弹出数据点信息

    我正在尝试检测折线图数据点上的点击 Per this answer dc scatter plot binding onClick event https stackoverflow com a 22772340 1873386 I am
  • Webpack - 资产大小限制中的警告:以下资产超出了建议的大小限制 (244 KiB)

    当我在生产模式下运行 webpack 时 有资产规模限制 超出 的警告 我怎样才能运行而不出现这个错误 在我的项目中 我包含 css 并且我看到 webpack 构建中包含一些 node module 目录 但是如果我排除 css 的 no
  • 如何使 4.X Typescript 项目与旧版本的 Typescript(如 3.X)兼容?

    如何使基于 TS 4 X 构建的软件包与 3 X 兼容 例如 如果我有较新的版本 则使用新功能 否则使用any or unknown或旧版本支持的任何内容 有没有可能使用指令 https www typescriptlang org doc
  • 除非打开开发人员工具,否则 IE8 Javascript 无法运行?

    由于某种原因 在 IE8 中 除非我在打开开发工具的情况下重新加载页面 否则 javascript 不会运行 我关闭开发人员工具并重新加载页面 然后 javascript 停止工作 我没有收到任何错误报告 无论如何它们也没有任何用处 还有其
  • javascript从字符串创建不区分大小写的正则表达式

    我试图通过以不区分大小写的方式将输入与正则表达式匹配来进行验证 正则表达式作为对象上的字符串从服务中下来 我可能会得到类似的东西 regex ane 我可以执行以下操作 var rx new RegExp object regex The
  • “memset”没有 DLL 那么如何 ctype 它

    如何使用memset在 jsc 类型中 没有对应的 DLL 我搜索 搜索了 js ctype 代码 但找不到要破解的示例 如果你只是想memset一个数组为零字节 然后我有 好消息 大家 js ctypes 会将新数组初始化为零 否则 最简
  • 如何使用 Chart.js 版本 3.2.1 在圆环图中添加文本

    我正在使用 Canvas 在 HTML 中使用 如何使用在圆环图中添加文本 这是我的 javascript 代码和 HTML 代码 我使用了图表js版本3 2 1 所以请给出相同版本 3 的解决方案 var overallStatsCanv
  • 尽管 getBoundingClientRect() 是假的,但如何将事件坐标转换为 SVG 坐标?

    我正在尝试根据鼠标的位置在 SVG 元素上动态绘制内容 不幸的是 我很难将 mousemove 事件中的鼠标坐标转换为 SVG 元素的坐标空间 这是我一直在测试的一个有缺陷的函数 CylinderDemo prototype handleM

随机推荐

  • 我应该如何对多线程代码进行单元测试?

    到目前为止 我已经避免了测试多线程代码的噩梦 因为它看起来像是一个雷区 我想问人们如何测试依赖线程成功执行的代码 或者人们如何测试仅在两个线程以给定方式交互时才出现的此类问题 对于当今的程序员来说 这似乎是一个非常关键的问题 恕我直言 汇集
  • 为什么 macOS Visual Studio Code 使用错误的 Python 解释器?

    我在 macOS Sierra 10 12 6 上运行 VS Code 1 33 1 当我运行如下所示的简单 Python 程序时 VS Code 使用 Mac 上安装的 Python 2 7 而不是我使用 Homebrew 安装的 Pyt
  • 如何检查文件是否正在使用?

    在尝试打开文件进行读取之前 有什么方法可以先测试文件是否正在使用 例如 如果文件仍在写入或被视为正在使用 则此代码块将引发异常 try FileStream stream new FileStream fullPath FileMode O
  • REST-Endpoint:无返回值的异步执行

    我的问题可能很容易解决 但目前我不明白 在我的 Quarkus App 中 我有一个 REST Endpoint 它应该调用一个方法 不等待结果并立即返回 202 HTTP Statuscode POST Produces MediaTyp
  • Mysqli DELETE QUERY 在 PHP 脚本中不起作用

    我使用下面的代码从表中删除一个条目 我想做的是检查是否从表中删除了任何值 如果删除了一个值 脚本应该打印成功 否则为 false 这是我所实现的 直到现在请帮忙
  • 将声音从左向右移动

    如何将 iPhone 耳机的声音从左移到右 我认为你想要 AVAudioPlayer 的 pan 属性 检查AVAudioPlayer 文档 从 pan 属性 通过设置这个属性你可以 将声音放置在立体声场中 值 1 0 为全左 0 0 为
  • Matlab z buffer 用于模拟kinect

    我们正在尝试模拟简单的 kinect 输出 我已经在 Matlab 中渲染了一个三角形网格 现在我想获取渲染形状的图形 轴的深度缓冲区 我如何在 matlab 中做到这一点 即如何访问图形的深度缓冲区 你可以尝试this
  • IIS 上的 .htaccess 或 .htpasswd 等效项?

    有谁知道 IIS 是否有相当于 htaccess 和 htpassword 的文件 我被要求将一个应用程序迁移到 IIS 该应用程序使用 htaccess 根据 htaccess 文件的内容控制对各种 URL 中的文件集的访问 我进行了谷歌
  • 如何让.net cf中的所有进程都运行

    我想从我的应用程序中获取 Windows Mobile 6 5 中所有正在运行的应用程序的列表 谁能告诉我如何为CF做到这一点 你必须 P 调用工具帮助 API 曾经有一篇 MSDN 文章对此进行了介绍 将其全部放入此处的帖子中有点长 但也
  • 如何根据用户的选择动态生成SQL查询?

    我需要创建一个 GUI 用户可以使用它选择多个属性 这些属性将用于查询数据库以找到合适的人 我正在寻找如何根据用户的选择动态生成数据库查询的想法 查询将包含多个字段 但为了了解这个想法 我将仅包含以下三个字段作为示例 职业 可以有 0 到
  • Spring cloud Stream中的事务

    Problem 我正在尝试逐行读取一个大文件并将消息放入 RabbitMQ 中 我想在文件末尾提交rabbitMQ 如果文件中的任何记录是坏的 那么我想撤销发布到队列的消息 技术 弹簧靴 春云流水 RabbitMQ 您能帮我实现这个过渡吗
  • 在.NET 中读取/保存 PixelFormat.Format48bppRgb PNG 位图?

    我已经能够使用以下 C 代码创建 Format48bppRgb PNG 文件 来自一些内部 HDR 数据 Bitmap bmp16 new Bitmap viewer Width viewer Height System Drawing I
  • 如何在 Linux 中从 C 获取当前时间(以毫秒为单位)?

    如何获取 Linux 上的当前时间 以毫秒为单位 这可以通过使用来实现POSIX clock gettime功能 在当前版本的 POSIX 中 gettimeofday is 标记为过时 这意味着它可能会从规范的未来版本中删除 鼓励应用程序
  • C - 获取用popen打开的进程的PID

    我有一个用 C 编写的程序 它使用 popen 打开另一个程序 我想获取该程序的 pid 或某种处理程序 以便在一定时间限制后 或者在它超出某些 ram 和 stdout 限制时杀死它 我认为这必须用ptrace来完成 它需要PID 但我不
  • x86处理器如何在引导加载程序加载GDT后立即获取指令?

    在为 x86 编写的典型简单引导加载程序中 我们有以下代码来加载 GDT 并执行远跳转 请注意 在执行以下代码之前 CS 为 0x0 lgdt gdtdesc movl cr0 eax orl 1 eax movl eax cr0 Jump
  • 一对多关系中外键始终为空 - Spring Boot Data with JPA

    我有两个实体类Country and Language具有双向一对多关系 下面是实体类 Entity Table name COUNTRY public class Country Id GeneratedValue Column name
  • 有没有办法为 TestNG suite.xml 中包含的方法指定参数?

    我正在为基于 TestNG 的自己的测试框架编写 suite xml 我的 xml 文件如下所示
  • C++ 关键字 auto 有什么作用? [复制]

    这个问题在这里已经有答案了 我最近在c 中遇到了关键字auto 在代码中 auto maxIterator std max element spec 0 spec sampleSize float maxVol maxIterator No
  • Java 构造函数具有比其类更广泛的访问级别

    Java规范允许具有默认访问权限的类对其构造函数进行公共访问 它的目的是什么 因为它不能在其包之外引用 我想将此作为评论 但由于评论中不允许使用代码标签 关于您对 CristopheD 的回答的评论 package bob class My
  • 为什么自定义元素不支持将属性作为对象?

    我试图将自定义元素中的数据属性作为对象传递 但在接收 AttachedCallback 方法内部时以字符串形式获取值 object object 那么任何人都可以帮助我弄清楚如何将属性作为自定义元素 Web 组件 中的对象获取 代码示例