【发布时间】:2016-07-12 21:12:11
【问题描述】:
我有一个 Polymer 应用程序运行一个 Iron-ajax 调用,该调用返回一个 json 字符串的服务:
{
"name": "John"
}
主页上的Polymer代码是:
<link rel="import" href="/elements/my-form.html">
<dom-module id="my-app">
<template>
...
<iron-ajax auto url="/grabData" handle-as="json" last-response="{{data}}"></iron-ajax>
<iron-label>
From iron-ajax = {{data.name}}
</iron-label>
<my-form></my-form>
...
“我的表单”是:
<link rel="import" href="/my-name.html">
<dom-module id="my-form">
<template>
<my-name></my-name>
</template>
<script>
Polymer({
is: 'my-form'
});
</script>
</dom-module>
而“我的名字”是:
<dom-module id="my-name">
<template>
<iron-label>
From my-name = {{data.name}}
</iron-label>
</template>
<script>
Polymer({
is: 'my-name'
});
</script>
</dom-module>
运行时,“From iron-ajax = John”和“From my-name =”。
虽然我可以在 my-name 中使用单个 ajax 调用,但我不想对每个自定义元素都这样做。我宁愿在一次调用中获取我的数据,并让自定义元素访问返回的数据。
如何在不通过 my-form 元素传递值的情况下获取 my-name 中的“name”?
--- 更新---
为了更清楚地了解期望的结果,这里有更多信息。
最终我想获得一个包含多个条目的非常大的 JSON 字符串:
{
"name": "John",
"address": [{
"street" : "14 Baker Street",
"city" : "somewhereville"
}],
"phone": "123-1234"
...
}
并让自定义元素处理每个条目:
<dom-module id="my-form">
<template>
<my-name></my-name>
<my-address></my-address>
<my-phone></my-phone>
...
</template>
【问题讨论】:
-
我只在自己的模板中使用了 ajax 结果。虽然我不是聚合物专家,但不确定是否可以这样做。
-
我也这样做了。我宁愿打一个电话,因为我需要返回几个数据项。
-
也许你可以使用iron-meta
-
您可以将其存储在
localStorage中,也可以触发iron-signal,它将包含数据并可以在my-name元素中收听该信号。虽然我建议通过my-form元素通过data-binding传递数据。 -
@a1626 是的,我的后备方案是:“
”然后是“ 我的名字>”。我希望不那么冗长,尽管它更符合 MVC 模式。这也是你指的吗?
标签: javascript html dom polymer polymer-1.0