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主要用于创建模板作用域,在我看来,只需节省键入时间。我会尽量使您的组件无状态和哑。然后通过属性绑定将数据传递给它们。