gpt4 book ai didi

javascript - JsViews 似乎不适用于数字属性

转载 作者:行者123 更新时间:2023-12-03 01:27:11 25 4
gpt4 key购买 nike

当我尝试传递具有数字属性的 JavaScript 对象时

{ 1: "One", 2: "Two", 3: "Three" }

数据绑定(bind)不呈现属性值,仅呈现示例中的数字

$.templates("template", "#template");
$.link.template("#row", { 1: "One", 2: "Two", 3: "Three" });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsviews/0.9.90/jsviews.min.js"></script>

<script id="template" type="text/x-jsrender">
<td>{{:1}}</td>
<td>{{:2}}</td>
<td>{{:3}}</td>
</script>

<table>
<tr id="row">
</tr>
</table>

但是如果我将对象的属性名称更改为以字母开头的名称,则可以正常工作

$.templates("template", "#template");
$.link.template("#row", { n1: "One", n2: "Two", n3: "Three" });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsviews/0.9.90/jsviews.min.js"></script>

<script id="template" type="text/x-jsrender">
<td>{{:n1}}</td>
<td>{{:n2}}</td>
<td>{{:n3}}</td>
</script>

<table>
<tr id="row">
</tr>
</table>

这是错误还是功能?如何使 jsViews 使用数字属性而不转换传递的对象?

最佳答案

如果您为某个整数编写 {{:4}} ,那么 JsRender 会将其视为表达式,并对其进行计算。 (例如 {{:4*12+2}} 将渲染 50)。

在 JavaScript 中,如果对象属性名称(键)不是有效的标识符名称,则必须使用方括号访问器语法。

在 JsRender/JsViews 模板中,也是如此。 (参见www.jsviews.com/#paths)。

以下是多个示例:

$.templates("template", "#template");
$.link.template("#row",
{ 1: "One", "2": "Two", 3: "Three", other: { 50: "fifty" }, 4: { 5: "five"}, "a b": "AB" });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsviews/0.9.90/jsviews.min.js"></script>

<script id="template" type="text/x-jsrender">
<td>{{:#data[1]}}</td>
<td>{{:#data[1+1]}}</td>
<td>{{:#data["3"]}}</td>
<td>{{:other[50]}}</td>
<td>{{:~root[1]}}</td>
<td>{{:#data[4]["5"]}}</td>
<td>{{:#data["a b"]}}</td>
</script>

<table>
<tr id="row">
</tr>
</table>

关于javascript - JsViews 似乎不适用于数字属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51475713/

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