【发布时间】:2015-02-23 18:21:03
【问题描述】:
我有一个对象数组,我想将每个对象渲染成聚合物线卡元素。每个元素被点击时,我想调用一个javascript函数。
我使用了一个简单的循环来使用 javascript 创建元素,但是当我单击/点击元素时没有任何反应。
这是我创建元素的 JS 函数的一部分:
createElements: function() {
...
var count = results.length;
var custom = "";
for (var a = 0; a < count; a++)//places results in cards
{
custom += '<core-card id="core_card10" on-tap="{{ test }}" horizontal layout>';
custom += '<core-item id="core_item4" label="' + results[a].account_number + '" horizontal center layout one flex center-justified></core-item>';
custom += '<core-item id="core_item5" label="' + results[a].given_name + '" onclick="horizontal" center layout one flex center-justified horizontal></core-item>';
custom += '<core-item id="core_item6" label="' + results[a].family_name + '" horizontal center layout one flex center-justified></core-item>';
custom += '<core-item id="core_item7" icon="mail" label="' + results[a].email + '" horizontal center layout one flex center-justified></core-item>';
custom += '<core-item id="core_item8" icon="perm-phone-msg" label="' + results[a].contact_numbers.main + '" horizontal center layout one flex center-justified></core-item>';
custom += '</core-card>';
}
this.$.result.innerHTML = custom;//places card elements on page
},
test: function() {
alert("works");
}
我正在尝试在更大的自定义聚合物元素中渲染卡片。卡片渲染得很好,但是当我点击它们时,我什么也得不到。
如果卡片元素已经存在于文档中,而不是像我试图做的那样被 JS 插入,那么它工作正常。只有当我尝试通过 JS 插入完全相同的标记时,我才会遇到这个问题。
【问题讨论】:
-
你是如何实现点击功能的?这可能是事件委托问题。
-
一个建议:为什么不把它变成它自己的元素,并且只在需要时使用
hidden?属性渲染它。 -
@aug 当用户点击核心卡或其任何子卡时,该函数应触发。
-
@Adi 可以工作。我有一个特定大小的数组,但我总是会显示一定数量的结果。所以我会说制作 10 个结果元素并隐藏它们,根据需要多少取消隐藏和填充。如果我有超过 10 个结果,则滚动 eventListener 调用该函数来更改当前集的值。如果我理解正确的话。
标签: javascript function dom polymer custom-element