gpt4 book ai didi

javascript - meteor 中如何使用模板生成动态 HTML 标签属性?

转载 作者:搜寻专家 更新时间:2023-10-31 23:08:09 25 4
gpt4 key购买 nike

我正在使用模板在 Meteor 中生成 HTML 标记属性,但它似乎已损坏。我无法将模板放入 meteor 中的 HTML 标记内我想知道为什么。

我正在使用 meteor-router用于路由。由于 meteor 基本上只允许单一布局,我想在 body 中添加一个类来指示当前 View 名称,如下所示:

/client/layout.html:

<head>
<title>Meteor App</title>
</head>

<body {{> body-attributes}}>
{{renderPage}}
</body>

<template name="body-attributes">data-view-name="{{page}}" class="{{page}}"<template>

这样我就可以在/client/layout.js 中执行此操作:

Template['body-attributes'].page = function () {
return Meteor.Router.page();
};

但这没有用,我从应用程序中收到一条错误消息,指出不支持 body 上的属性。将 layout.html 更改为:

<head>
<title>Meteor App</title>
</head>

<body>
<div {{> body-attributes}}>
{{renderPage}}
</div>
</body>

<template name="body-attributes">data-view-name="{{page}}" class="layout-container {{page}}"<template>

导致完全损坏的 HTML。浏览器在页面前显示一个“>”,控制台元素面板如下所示: Console screenshots

为什么那行不通?

最佳答案

调用 {{> body-attributes}} 一个 HTML 标签(在你的例子中是 body 标签)最终意味着 Meteor 将注入(inject)一个 DocumentFragment在该位置进入 DOM。

为了 react 性,这些 DocumentFragments 不是模板中标记的原始复制品,而是包含在特殊的 Meteoresque react 性标签中,帮助后端引擎保持 Template 已更新。您可以通过调用 Template 函数并调查 _domFrag 的外观来看到这一点:

var _domFrag = Template.myTemplateName();

因此, meteor 上下文中的 Templates 并未设计为作为 HTML 标签的属性嵌入,因为它在标签本身中注入(inject)了额外的标签。你的第二次尝试更符合框架的工作方式。

希望这有助于解释这种行为。

关于javascript - meteor 中如何使用模板生成动态 HTML 标签属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14072799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com