Javascript 聚合物1.0-模板内显示值的问题为;“dom repeat”;

Javascript 聚合物1.0-模板内显示值的问题为;“dom repeat”;,javascript,polymer,polymer-1.0,Javascript,Polymer,Polymer 1.0,从0.5开始,我遇到了一件有趣的事情。我想这可能会帮助其他有类似问题的人 我使用了一个元素…。我面临的问题是,我必须将每个属性绑定放在HTML元素中。下面是我打算编写的代码: {{item.name}} {{item.addr},{{item.addr2}} {{item.phone} 你没有做错什么。随着Polymer 0.9(以及更高版本的1.0)的引入,只有将所有内容包装到自己的元素中时,才能将数据绑定到文本节点的内容 见: 绑定注释当前必须跨越标记的整个内容 因此,您必须删除所有空格

从0.5开始,我遇到了一件有趣的事情。我想这可能会帮助其他有类似问题的人

我使用了一个元素
。我面临的问题是,我必须将每个属性绑定放在HTML元素中。下面是我打算编写的代码:


{{item.name}}
{{item.addr},{{item.addr2}}
{{item.phone}
你没有做错什么。随着Polymer 0.9(以及更高版本的1.0)的引入,只有将所有内容包装到自己的元素中时,才能将数据绑定到文本节点的内容

见:

绑定注释当前必须跨越标记的整个内容

因此,您必须删除所有空格和其他字符,它才能工作

文档中的示例:

<!-- this works -->
<template>   
  First: <span>{{first}}</span><br>
  Last: <span>{{last}}</span>
</template>

<!-- Not currently supported! -->
<div>First: {{first}}</div>
<div>Last: {{last}}</div>

<!-- Not currently supported! -->
<div>
  {{title}}
</div>

第一:{{First}}
最后:{{Last}} 第一:{{First} 最后:{{Last}} {{title}}

编辑
从聚合物1.2开始,问题中描述的问题不再有问题/错误。复合绑定现在可以工作了,请参见。

对于元素属性,只是一个提示,尽管您可以使用类似于字符串连接的辅助函数的东西。这里有一个例子

<my-foo fullname="{{computeFullName(firstname, lastname)}}">
        Hi, my name is <span>{{firstname}}</span>.
</my-foo>


...

computeFullName: function(first, last) {
  return first + ' ' + last;
}

嗨,我叫{{firstname}。
...
computeFullName:函数(第一个,最后一个){
返回第一个+“”+最后一个;
}
以下是链接:

编辑: 对于节点内容,字符串连接也可以使用(我称之为helper函数)来完成。举个例子

<dom-module id="x-custom">
  <template>
    My name is <span>{{fullName}}</span>
  </template>
</dom-module>

<script>
  Polymer({

    is: 'x-custom',

    properties: {

      first: String,

      last: String,

      fullName: {
        type: String,
        // when `first` or `last` changes `computeFullName` is called once
        // (asynchronously) and the value it returns is stored as `fullName`
        computed: 'computeFullName(first, last)'
      } 

    },

    computeFullName: function(first, last) {
      return first + ' ' + last;
    }

    ...

  });
</script>

我的名字是{{fullName}
聚合物({
是:“x-custom”,
特性:{
第一:字符串,
最后:弦,,
全名:{
类型:字符串,
//当'first'或'last'更改时,调用一次'computeFullName'
//(异步)并将其返回的值存储为“fullName”`
计算:“computeFullName(第一个,最后一个)”
} 
},
computeFullName:函数(第一个,最后一个){
返回第一个+“”+最后一个;
}
...
});

您需要使用计算属性来组合值。使用Polymer 1.2在此页面上搜索它们,您的示例代码将实际起作用。绑定注释不再需要跨越整个标记

例如:

<div>first name: [[name.first]] last name: [[name.last]]</div>
名字:[[name.first]]姓氏:[[name.last]]

标记内不支持字符串连接,并且标记不能包含任何空格。谢谢你的快速回复。这意味着我不能在一个标记中绑定多个属性值?然而,这在0.5中是可能的。这是1.0中的新规则集吗?实际上不是规则。因为0.8是一个完全重写,所以有些东西没有添加回来。这就是其中之一。但这只是暂时的,因为字符串连接将在1.0之后恢复。这是他们目前的路线图。这将是很好的事实:)谢谢你勒伯德的快速和有益的反应!我浏览了迁移文档,但从未意识到这是一个新的规则集:)然而,我不明白为什么要施加此限制。如果字符串连接仍然存在怎么办?我们正计划重新添加它,它只是没有进行1.0剪切,如何处理dom repeat?在哪里连接字符串和{{item}}?请参见下面joseph_k的答案。我认为使用computed属性比添加不必要的HTML标记更好解决这个问题这是个好消息。实际上,我计划下周将我的应用程序升级到1.2。谢谢你的链接。我很快就会过去的。最受欢迎的修复方法是,
复合绑定可以在许多情况下消除对计算绑定的需要