Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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 在dom重复模板内的纸张按钮中执行事件_Javascript_Polymer 1.0 - Fatal编程技术网

Javascript 在dom重复模板内的纸张按钮中执行事件

Javascript 在dom重复模板内的纸张按钮中执行事件,javascript,polymer-1.0,Javascript,Polymer 1.0,我有以下内容: <dom-module id="my-blogentry"> <template> <style> :host { display: block; } .div-general{ </style> <div class="div-general"> <template is="dom-repeat"

我有以下内容:

<dom-module id="my-blogentry">
<template>
    <style>
        :host {
            display: block;
        }
        .div-general{
      </style>
    <div class="div-general">
        <template is="dom-repeat" items="{{entries}}">
            <paper-material elevation="1" animated="true" class="paper-material-presentation">
                <div class="div-date-left">
                    <span>{{item.date}}</span>
                </div>
                <div>
                    <iron-image src$="../../images/{{item.image}}" style="width:128px; height:128px;" sizing="cover"></iron-image>
                    {{item.resume}} 
                    <paper-button id="bt_readmore" on-tap="toggle">Read More</paper-button>
                    <iron-collapse id="collapse">
                      <div>{{item.content}}</div>
                    </iron-collapse>
                </div>
            </paper-material>
        </template>
    </div>
</template>
<script>
    Polymer({
        is: 'my-blogentry',

        ready: function() {
            this.entries = [
                {id: '1', title: ‘xxx.', date: 'Tuesday, March 8, 2016', image:'im-blogdefault.png', resume:’xxx’,content:’xxxx’}
            ];
          },

        toggle: function () {
            this.$$('#collapse').toggle();
        }
    });

</script>

:主持人{
显示:块;
}
律政司司长{
{{item.date}
{{item.resume}
阅读更多
{{item.content}
聚合物({
是‘我的博客条目’,
就绪:函数(){
此项。条目=[
{id:'1',标题:'xxx',日期:'2016年3月8日,星期二',图片:'im-blogdefault.png',简历:'xxx',内容:'xxxx'}
];
},
切换:函数(){
此.$$(“#折叠”).toggle();
}
});
如果您可以查看元素代码,我在
中有一个
熨斗折叠
元素和一个按钮。我的建议是用户可以点击按钮并切换按钮打开折叠元素

问题是,我的代码可以很好地打开第一个项目,但是当我在列表中有更多的项目并且我按下第二个项目按钮时,第一个和第二个折叠也打开了

我在论坛中搜索了其他帖子,我发现:
本例修改了模型中的项目,但没有修改我所需要的DOM(切换我的iron折叠元素)


我将非常感谢您的帮助。

这是因为在您的代码中,所有
都得到了相同的
id=“collapse”

您可以将
条目
中的一些值添加到
中,或者尝试从按钮单击事件中获取
DOMReatModel
,以找到正确的折叠

示例代码使用来自
条目的唯一
id
属性(我假设它有一个):


这是解决方案,我将id分配给熨斗折叠标识符,密钥使用id属性中的符号
$

<template is="dom-repeat" items="{{entries}}">
            <paper-material elevation="1" animated="true" class="paper-material-presentation">
                <div class="div-date-left">
                    <span>{{item.date}}</span>
                </div>
                <div class="div-entry-resume">
                    <iron-image src$="../../images/{{item.image}}" style="width:128px; height:128px;" sizing="cover"></iron-image>
                    {{item.resume}} 
                    <iron-collapse id$="collapse{{item.id}}">
                      <div>{{item.content}}</div>
                    </iron-collapse>
                    <div class="div-entry-bottom">
                        <paper-button id$="bt_readmore" on-tap="toggle">Read More</paper-button>
                    </div>
                </div>
            </paper-material>
        </template>

感谢@Günter Zöchbauer在这方面的帮助。

感谢@Günter Zöchbauer今天看来你是我的救星,我很感激我会检查这一点并让你知道。我在控制台中发现了以下错误:
未捕获类型错误:event.target.getAttributes不是函数
这是我更改的代码:
{{item.content}阅读更多
谢谢@Günter Zöchbauer我得到了问题的答案,我非常感谢你的帮助。我将把我的代码放在这里,这样它可以帮助像我一样的其他人。在
getAttributes()中有一个多余的
s
。很高兴听到你找到了答案。非常感谢@GünterZöchbauer,我刚刚用你的解决方案做了一个片段,我不得不做一点修改。这个片段是
    toggle: function (event) {
        this.$$('[ident="' + event.target.getAttribute('ident') + '"]').toggle();
    }
<template is="dom-repeat" items="{{entries}}">
            <paper-material elevation="1" animated="true" class="paper-material-presentation">
                <div class="div-date-left">
                    <span>{{item.date}}</span>
                </div>
                <div class="div-entry-resume">
                    <iron-image src$="../../images/{{item.image}}" style="width:128px; height:128px;" sizing="cover"></iron-image>
                    {{item.resume}} 
                    <iron-collapse id$="collapse{{item.id}}">
                      <div>{{item.content}}</div>
                    </iron-collapse>
                    <div class="div-entry-bottom">
                        <paper-button id$="bt_readmore" on-tap="toggle">Read More</paper-button>
                    </div>
                </div>
            </paper-material>
        </template>
toggle: function (event, detail, sender) {
            var id = event.model.item.id;
            var selector = '#collapse' + id;
            this.$$(selector).toggle();
        }