Polymer 具有其他属性的类型对象的聚合索引属性

Polymer 具有其他属性的类型对象的聚合索引属性,polymer,polymer-1.0,Polymer,Polymer 1.0,我有一个自定义元素,x-custom,它有一个属性,object,这是一个对象 我还有另一个属性,name,我想用它来索引对象,将来自其他自定义元素的数据放在对象的特定属性下 最终目标如下: <other-custom-element data="{{object.{{name}}}}"></other-custom-element> ... name: { type: String, }, object: { type: Object, value: {

我有一个自定义元素,
x-custom
,它有一个属性,
object
,这是一个对象

我还有另一个属性,
name
,我想用它来索引
对象
,将来自其他自定义元素的数据放在
对象
的特定属性下

最终目标如下:

<other-custom-element data="{{object.{{name}}}}"></other-custom-element>
...

name: {
  type: String,
},

object: {
  type: Object,
  value: {}
}
我试图通过
\u resolveRef()
基本上传递对
alldata
的特定元素的引用,但我认为可能存在范围问题。我得到以下错误(例如,如果
location
等于“some_location”):

因此,出于某种原因,它似乎不知道“alldata”,即使它是自定义元素的属性。希望这足以让一位聚合物能手帮上忙:)

编辑2:

一些示例数据可以使最终目标更加明确

假设位置是由以下字符串组成的数组:

locations: {
  type: Array,
  value: ['location1', 'location2']
}
并假设
元素为每个单独的位置返回以下数据:

<get-data-at-location
  location=[[location]] //'location1'
  data={{}}>            //[{value: 4, time: 0}, {value: 5, time: 1}]
</get-data-at-location>

<get-data-at-location
  location=[[location]] //'location2'
  data={{}}>            //[{value: 10, time: 1}, {value: 11, time: 2}]
</get-data-at-location>
因此,我希望对象
alldata
在dom的所有实例之间共享,以便它们都可以将数据放入整个对象各自的属性(即位置的字符串值)中

编辑3:

尝试了一些新的东西。我没有使用
\u resolveRef(location)
作为返回指向
应该存储它获取的数据的位置的指针的方法,而是使用了以下语法:
{{{alldata[location]}
,虽然效果更好,但仍然不完美

<template is="dom-repeat" items="[[locations]]" as="location">
  <get-data-at-location
    location="[[location]]"
    data="{{alldata[location]}}">
  </get-data-at-location>

  <h5>Data at location: [[location]]</h5>
  <template is="dom-repeat" items="{{alldata[location]}}" as="data">
    <p>Data: {{data.value}}</p>
    <p>Time: {{data.time}}</p>
  </template>
</template>

...

alldata: {
  type: Object
  value: {}
}

只是漂亮地打印提供的对象,在本例中,它只打印空括号
{}
。因此,比较接近(有点接近),但仍然不太接近。

您可以创建一个函数来接收名称并返回您想要使用的值。@Alon,谢谢您的评论。这看起来像是
..吗。。。?应该用大括号括起来吗?{{{u resolveObjectRef(name)}}只是一个提示,您可能不想使用
value:{}
,因为这个对象将在您元素的所有实例中共享。如果元素的每个实例的默认值都应该有一个不同的对象,那么您需要这样:
value:function(){return{};}
另外,为了解决基本的调试问题,您是否100%肯定在这个dom重复运行时将alldata定义为一个值?您是否从可能将其设置为未定义的源获取该数据?
<get-data-at-location
  location=[[location]] //'location1'
  data={{}}>            //[{value: 4, time: 0}, {value: 5, time: 1}]
</get-data-at-location>

<get-data-at-location
  location=[[location]] //'location2'
  data={{}}>            //[{value: 10, time: 1}, {value: 11, time: 2}]
</get-data-at-location>
alldata: {
  location1: [{value: 4, time: 0}, {value: 5, time: 1}],
  location2: [{value: 10, time: 1}, {value: 11, time: 2}]
}
<template is="dom-repeat" items="[[locations]]" as="location">
  <get-data-at-location
    location="[[location]]"
    data="{{alldata[location]}}">
  </get-data-at-location>

  <h5>Data at location: [[location]]</h5>
  <template is="dom-repeat" items="{{alldata[location]}}" as="data">
    <p>Data: {{data.value}}</p>
    <p>Time: {{data.time}}</p>
  </template>
</template>

...

alldata: {
  type: Object
  value: {}
}
<x-custom alldata={{allData}}></x-custom>
<x-pretty-json object={{allData}}></x-pretty-json>