簡體   English   中英

使用把手訪問嵌套數組渲染中的父數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM