簡體   English   中英

Handlebars.js 中花括號內的變量名稱

[英]Variable name inside curly braces in Handlebars.js

我有一個助手准備這樣的表達式{{@../../key}}.{{@../key}}.{{@key}} 我如何執行這個由助手返回的表達式

示例對象:

{
    "a": { 
        "b": { 
            "c": 1 
             }
       }
}

示例: <input name="{{testHelper arg1 arg2}}" />

預期輸出: <input name="abc" />

接收到的輸出: <input name="{{@../../key}}.{{@../key}}.{{@key}}" />

簡單的例子在這里

這可以通過遞歸助手來解決。 像這樣:

Handlebars.registerHelper('getPath', function(meta) {
  const resolvePath = (node, path=[]) => {
    if (node._parent) {
        return resolvePath(node._parent, [node.key, ...path]);
    }
    return [node.key, ...path];
  }
  return resolvePath(meta.data)
    .filter(p => p !== undefined)
    .join('.');
});

游樂場

編輯:如果您真的只想要某個任意深度的路徑,請改用此版本。

Handlebars.registerHelper('getPath', function(depth, meta) {
  const resolvePath = (depth, node, path=[]) => {
    if (node._parent && depth > 0) {
        return resolvePath(depth-1, node._parent, [node.key, ...path]);
    }
    return [node.key, ...path];
  }
  return resolvePath(depth, meta.data)
    .filter(p => p !== undefined)
    .join('.');
});

游樂場

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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