簡體   English   中英

如何將變量傳遞給除塵助手功能鍵?

[英]How to pass a variable into a dust helper function key?

我正在創建一個灰塵幫助函數,該函數將訪問保存我的文本的全局JS對象。 我還需要能夠從灰塵幫助函數將使用的模型中傳入一個變量。 我的除塵助手看起來像...

var global = {
    lesson_titles: [
        "Lesson 1",
        "Lesson 2",
        "Lesson 3"
    ],
    lesson1: {
        a: "This is lesson1.a"
    }
};

dust.helpers.global = function ( chunk, context, bodies, params ) { 
    var key = params.key;
    var parts = key.split(".");
    var current = global;
    for(var i = 0; i < parts.length; i++) {
        current = current[parts[i]];
    }
    chunk.write(current);
};

而預期的用途是在我的灰塵文件中,就像...

{@global key="lesson1.a"}

這可以正常工作,但是對於我傳入的一個模型,我有一個名為“ lesson_index”的變量。 我希望能夠在鍵中使用該變量,以便能夠正確訪問事物。 例如...

{@global key="lesson_titles.{lesson_index}"}

lesson_index將為0、1或2,然后將根據其索引正確獲取正確的課程標題。 正確的索引是什么?

請注意-通過編寫全局助手來重新發明輪子。 Dust在Dust上下文中包含一個global對象,該對象在參考查找期間自動訪問。 如果您需要訪問無法傳遞到上下文中的全局變量,這是可以的,但這意味着您將需要做更多的工作。

要解析字符串中的任何引用,可以使用特殊的上下文函數context.resolve 您只需要更改一行代碼即可:

var key = context.resolve(params.key);

此函數將使用您當前的上下文在params.key呈現字符串,因此key計算結果為lesson_titles.1

暫無
暫無

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

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