2016-03-25 14 views
1

dust.jsと、現在のコンテキストからデータを取得する方法newcontext変数。ダストのドキュメントとして私はDust.jsと協力し、2つのアレイ(<em>DATAX</em>と<em>DATAY</em>)からのデータをマージしてレンダリングするためにdust.makeBase機能を使用しようとしている

var context = dust.makeBase(); 
var newcontext = context.push(datax) 
         .push(datay); 

最後の配列は、(私のサンプルでDATAY)は現在のコンテキストになって押しました。 jsFiddleで起動すると、現在のコンテキストから取得したデータが正しく表示されることがわかります。

トランクルーム情報

{#.} 
    {#data}{id} - {special_offer} 
    {/data} 
    {/.} 

私は現在のコンテキストのうち、表示データを来たときしかし、明らかにデータが到達していません。以下は動作しません。

トランクルーム施設

{#.} 
    {#facility} 
    {id} - {size} 
    {#facilityamenities.amenities}{amenities_id} - {full_desc}  
    {/facilityamenities.amenities} 
    {/facility} 
{/.} 


私はhttp://www.dustjs.com/guides/contexts/上のいくつかの命令を持っているが、それは十分ではありません。

ウェブ上のいくつかの例をチェックしてみましたが、私はコンテキストヘルパーでしたが、jsfiddleにこのバージョンが出てきましたが、機能コードが実行されても結果は期待通りです。コードの下に。

var context = dust.makeBase({"getselfdata": { 
"selfdata": function(chunk, context) 
{ 
    var price = context.get("facility.price_formatted"); 

    return price; 
} 
}}); 

助けてください。

+0

あなたの質問は、優れた構造でよく書かれていました。 – Interrobang

答えて

0

コンテキストにプッシュされた最後のアイテムが現在のコンテキストになることは間違いありません。複数のアイテムをコンテキストにプッシュすると、「このアイテムの前にコンテキストにプッシュされたアイテム」など、位置によってアイテムを参照する方法はありません。

ダストに現在のコンテキストに存在しない参照を指定すると、ダストは以前の各コンテキストで参照を検索します。これにより、コンテキストスタックを歩くことができます。

私はあなたの例を2つ変更して動作させました。 dataxのために、私はfacilities、一つのキーを持つオブジェクトの配列をラップ:あなたは一つの追加のバグがありました

{#facilities} 
    {#facility} 
    <tr><td>{id} - {size} - {#facilityamenities}{#amenities} 
     {amenities_id} - {full_desc} 
    {/amenities}{/facilityamenities}</td></tr> 
    {/facility} 
{/facilities} 

{ "facilities": [ 
    { "facility": { ... } }, 
    { "facility": { ... } } 
]} 

次に、あなたのテンプレートで、私は、この参照を検索するためのダストを語りましたこのテンプレートで

{ "facilityamenities": { 
    "amenities": { ... } } 

は、しかし、あなたの"facilityamenities"が配列であるので、代わりにあなたはダストは、最初facilityamenitiesをループし、はamenitiesを検索するように{#facilityamenities}{#amenities}を使用する必要があります:{#facilityamenities.amenities}が機能するためには、あなたのデータは次のように検討する必要があります。

JSFiddleはあなたの意図通りに動作します。

関連する問題

 関連する問題