Javascript 将iron ajax JSON响应条目数据绑定到嵌套的聚合自定义元素
我有一个Polymer应用程序运行一个iron ajax调用,调用一个返回json字符串的服务:Javascript 将iron ajax JSON响应条目数据绑定到嵌套的聚合自定义元素,javascript,html,dom,polymer,polymer-1.0,Javascript,Html,Dom,Polymer,Polymer 1.0,我有一个Polymer应用程序运行一个iron ajax调用,调用一个返回json字符串的服务: { "name": "John" } 主页上的聚合物代码为: <link rel="import" href="/elements/my-form.html"> <dom-module id="my-app"> <template> ... <iron-ajax auto url="/grabData
{
"name": "John"
}
主页上的聚合物代码为:
<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>
...
并让自定义元素处理每个条目:
<dom-module id="my-form">
<template>
<my-name></my-name>
<my-address></my-address>
<my-phone></my-phone>
...
</template>
...
下面是关于如何在元素之间传递数据的示例片段。我从元素的属性传递数据,而不是ajax调用。需要注意的一些要点
- 如果您想将整个数据传递给子元素,您可以将子元素中的
名称
属性替换为父元素的数据
属性,名称不必相同,例如,如果子元素的属性用户
类型为对象
(第一个字母大写),那么您的绑定将是用户={{data}
- 如果需要,您可以将
{{}}
替换为[[]]
,除非您希望将更改从子级传播到父级,在这种情况下,您必须向名称
属性添加另一个参数,即通知
,并将其值设置为true,如
name:{
type:String,
notify:true
}
- 在您的情况下(使用ajax调用),在
properties
中列出name
和data
是可选的,但我推荐它,因为它可以方便地向属性添加新功能(如notify),也可以方便地跟踪大型元素中的所有属性
- 有关
属性
和数据绑定
的更多详细信息,请查看这些链接
来自应用程序的名称:{{data.Name}
聚合物({
是:“我的应用程序”,
特性:{
数据:{
类型:对象
}
}
});
来自表单的名称:{{Name}
聚合物({
是‘我的表格’,
特性:{
姓名:{
类型:字符串
}
}
});
名称来自名称:{{Name}
聚合物({
是‘我的名字’,
特性:{
姓名:{
类型:字符串
}
}
});
我只在自己的模板中使用了ajax结果。虽然我不是聚合物专家,但我不确定是否有可能做其他事情。我也做过同样的事情。我更喜欢打一个电话,因为我需要返回几个数据项。也许你可以使用你可以将它存储在localStorage
中,或者你可以启动一个包含数据并可以在my name
元素中监听该信号的命令。虽然我建议通过我的表单
元素通过数据绑定
@a1626是的,但我的回退是:“&then”。我希望不要那么冗长,尽管它更符合MVC模式。这也是你说的吗?
{
"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>
name:{
type:String,
notify:true
}