Javascript 将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

我有一个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" 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
}