首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JsViews似乎不适用于数字属性

JsViews似乎不适用于数字属性
EN

Stack Overflow用户
提问于 2018-07-23 09:38:01
回答 3查看 111关注 0票数 0

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

代码语言:javascript
复制
{ 1: "One", 2: "Two", 3: "Three" }

数据绑定不呈现属性值,只呈现数字,如

代码语言:javascript
复制
$.templates("template", "#template");
$.link.template("#row", { 1: "One", 2: "Two", 3: "Three" });
代码语言:javascript
复制
<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>

但是,如果我将对象的属性名更改为以字母开头的东西,它就可以了。

代码语言:javascript
复制
$.templates("template", "#template");
$.link.template("#row", { n1: "One", n2: "Two", n3: "Three" });
代码语言:javascript
复制
<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在不转换传递对象的情况下使用数值属性?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-23 18:10:08

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

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

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

以下是多个例子:

代码语言:javascript
复制
$.templates("template", "#template");
$.link.template("#row",
 { 1: "One", "2": "Two", 3: "Three", other: { 50: "fifty" }, 4: { 5: "five"}, "a b": "AB" });
代码语言:javascript
复制
<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>

票数 2
EN

Stack Overflow用户

发布于 2018-07-23 09:50:06

请检查JSRender/JSView

在这里,如果您看到最后一节示例:{:#index.},它使用json对象的索引,当您在json对象中使用数字作为键时,并试图在模板中映射它,因此模板将它视为索引而不是键。更好地使用一些带有数字的静态字母,如key1、key2.等。

代码语言:javascript
复制
$.templates("template", "#template");
$.link.template("#row", {key1: "One", key2: "Two", key3: "Three" });
代码语言:javascript
复制
<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>{{:key1}}</td>
  <td>{{:key2}}</td>
  <td>{{:key3}}</td>
</script>

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

票数 0
EN

Stack Overflow用户

发布于 2018-07-23 09:43:41

我认为你应该像下面这样使用字符串。

代码语言:javascript
复制
{ "1": "One", "2": "Two", "3": "Three" }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51475713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档