2017-12-09 15 views
1

私のフロントエンドヘルパーで私はパラメータを使用し、どこにでもdata.widgetを与えます。ヘルパーのウィジェットデータにアクセスする方法

ヘルパーコンテキストでdata.widgetにアクセスできますか?私はself.outputオブジェクトツリーしか見つけていません。しかし、私はそれが良質の解決策ではないと思います。

ありがとうございました。

{{ apos.myModuleAlias.iCallAHelper(data.widget) }}

とのmymodule-ウィジェット/ index.jsの一部:

construct: function(self, options) { 
    self.addHelpers({ 
    iCallAHelper: function(data) { console.log(data); } 
    }); 
} 
あなたのような何かを行うことができ、テンプレート内

まあ、:コードサンプルのため

編集

data.widgetをパラメータとして指定しなくても、ヘルパー内のdata.widgetにアクセスできますか?

+0

コードサンプルはコンテキストをよりよく理解するのに役立ちます –

答えて

3

テンプレートレベルでヘルパーにピース/ウィジェット/ページを渡すことは、あなたのイラストレーションのように、よくあることです。

あなたの問題はあなた常にがウィジェットに基づいて起こるためにいくつかの特殊なデータ/決定/フォーマットが必要だということであるならば、あなたはウィジェットのloadメソッドをオーバーライドして、あなたのウィジェットにその特別な何かを添付して、あなたのテンプレートにアクセスすることができます。

ウィジェットのindex.js

module.exports = { 
    extend: 'apostrophe-widgets', 
    ... 
    construct: function(self, options) { 
     const superLoad = self.load; 
     self.load = function (req, widgets, callback) { 
      return superLoad(req, widgets, function (err) { 
       if (err) { 
        return callback(err); 
       } 
       // `widgets` is each widget of this type being loaded on a page 
       widgets.forEach(function (widget) { 
        // do something cool, attach it to widget 
        widget.somethingCool = 'hello world'; 
       }); 
       return callback(null); 
      }); 
     }; 
    } 
} 

次に、あなたのテンプレートにdata.widget.somethingCoolにアクセスすることができるだろう。

関連する問題