[英]Access parent data in nested array rendering with handlebars
我有以下數據結構:
A :
{
"B": [
{
"C":["Hello", "World"]
}
]
}
A具有作為數組的屬性B。 B的每個元素都有一個屬性C ,它又是一個數組。
<template name="render">
{{#each B}}
{{#each C}}
<div class="clickme">{{this}}</div>
{{/each}}
{{/each}}
</template>
所以現在有了事件處理程序,我想在其中訪問呈現了'this'(== C的元素)的B元素。但這似乎是不可能的。 我該怎么做?
Template.render.events({
"click .clickme" : function (event, template) {
//template.data == A
//Template.parentData(0) == A
//Template.parentData(1) == A
console.log("what was my parent B?");
}
})
您可以使用../
向上../
多個級別。在這種情況下,假設您想要父元素的索引,然后:
{{@../index}}
要訪問父元素的另一個鍵(不適用於您的情況):
{{../key}}
參考文獻:
通過“每個”把手進入父級的屬性
Handlebars.js:如何在嵌套的嵌套索引中訪問父索引?
編輯:要從“ click .clickme”事件處理程序訪問父元素,我不知道從事件處理程序訪問的直接方法,但是一種可能的方法是在html中創建onclick事件,並調用一個函數,您可以將父元素(或其索引)作為參數傳遞。 在函數中,set作為會話變量,然后可以在“ click .clickme”事件處理程序中引用該變量。
模板:
<template name="render">
{{#each B}}
{{#each C}}
<div class="clickme" onclick="onclickfunction('{{@../index}}')">{{this}}</div>
{{/each}}
{{/each}}
</template>
在客戶端javascript中,定義一個函數:
onclickfunction = function(parentindex) {
Session.set('indexofparent',parentindex);
}
在“ click .clickme”事件處理程序中,獲取會話變量:
Template.render.events({
"click .clickme" : function (event, template) {
//template.data == A
//Template.parentData(0) == A
//Template.parentData(1) == A
var parentelement = Session.get('indexofparent');
console.log(parentelement);//Shows index of B.
}
})
B的PS索引是一個字符串,使用pareseInt(parentelement)解析為整數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.