Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 聚合物数据绑定:如何访问嵌套模板中的数据?_Javascript_Html_Polymer_Web Component - Fatal编程技术网

Javascript 聚合物数据绑定:如何访问嵌套模板中的数据?

Javascript 聚合物数据绑定:如何访问嵌套模板中的数据?,javascript,html,polymer,web-component,Javascript,Html,Polymer,Web Component,我想实现一个包含纸张选项卡的页面,每个选项卡根据名称首字母显示项目列表。我想知道数据绑定的最佳方式是什么 此外,我在访问嵌套模板中的数据时遇到了一些问题。当我点击不同的标签时,它并不像我预期的那样工作 以下是简化代码: //page <paper-tabs selected="{{tab}}"> <template repeat="{{inital in pagination}}"> <paper-tab name="{{initial}}">

我想实现一个包含纸张选项卡的页面,每个选项卡根据名称首字母显示项目列表。我想知道数据绑定的最佳方式是什么

此外,我在访问嵌套模板中的数据时遇到了一些问题。当我点击不同的标签时,它并不像我预期的那样工作

以下是简化代码:

//page
<paper-tabs selected="{{tab}}">
  <template repeat="{{inital in pagination}}">
    <paper-tab name="{{initial}}">
      {{initial}}
    </paper-tab>
  </template>
</paper-tabs>

<items-field
  tab="{{tab}}"
  items="{{items}}">
</items-field>


//items-field
<polymer-element name="items-field" attributes="tab items">
  <template>
    <h2>h2 {{tab}}</h2>
    <div>some other stuffs</div>
    <template bind="{{items}}">
      <h3>h3 {{tab}}</h3> <-- {{tab}} is undefined
      <item-list
        initial="{{tab}}"
      </item-list>
    </template>
  </template>
  <script>
  Polymer({
    tab: 'A'
  )}
  </script>
</polymer-element>


//item-list
<polymer-element name="items-list" attributes="initial">
  <template>
    <template repeat="{{item in items}}">
      <item
        hidden?="{{toHide(initial, item.name)}}">
      </item>
    </template>
  </template>

  <script>
    Polymer({
      ready: function () {
        this.items = this.templateInstance.model;
        console.log(this.initial); // <-- undefined
      },

      toHide: function (initial, name) {
        if (initial === undefined ||
          initial === name.charAt(0)) {
          return false;
        }

        return true;
      }
    });
    </script>
</polymer-element>
//第页
{{initial}}
//项目字段
h2{{tab}
其他的东西

h3{{tab}}我认为您遇到的主要问题是弄乱了绑定范围

这一点:

<template bind="{{items}}">
  <h3>h3 {{tab}}</h3> <-- {{tab}} is undefined
  <item-list initial="{{tab}}"
  </item-list>
</template>

我认为您遇到的主要问题是弄乱了绑定范围

这一点:

<template bind="{{items}}">
  <h3>h3 {{tab}}</h3> <-- {{tab}} is undefined
  <item-list initial="{{tab}}"
  </item-list>
</template>

谢谢@robdodson!我喜欢“元素就是模型”的理念。我的理解是:当我使用“bind”时,那个元素就是那个模型;当我使用“属性”时,我会向模型中注入一些东西。最好的做法是使用“bind”还是“attribute”?bind主要用于创建模板作用域,在我看来,只需节省键入时间。我会尽量使您的组件无状态和哑。然后通过属性绑定将数据传递给他们。谢谢@robdodson!我喜欢“元素就是模型”的理念。我的理解是:当我使用“bind”时,那个元素就是那个模型;当我使用“属性”时,我会向模型中注入一些东西。最好的做法是使用“bind”还是“attribute”?bind主要用于创建模板作用域,在我看来,只需节省键入时间。我会尽量使您的组件无状态和哑。然后通过属性绑定将数据传递给它们。