2013-11-08 2 views
0

Как вы добавляете html в раздел в dust.js? Кажется, что нет встроенного способа сделать это. Может быть, для этого можно использовать какой-то потоковый блок? Другим решением может быть помощник dustjs, который найдет раздел и добавит в него.Как добавить html в раздел в dust.js?

Мне нужна эта функциональность, чтобы добавлять скрипты и стили в голову html-документа при включении других шаблонов в родительский шаблон.

Любые идеи, как подойти к этой проблеме? Я также принимаю решения, которые используют тела или блоки вместо разделов.

+0

Вы можете загрузить некоторые шаблоны. – boring

+0

AFAIK, вы можете только заменить содержимое блока частичными, но не добавлять из многих мест в один блок. Как и глава раздела HTML. – villetou

ответ

1

Если я правильно понимаю вас, вам нужен какой-то блок, который вы можете использовать для вставки динамического содержимого в !? Вы действительно можете написать помощника, чтобы сделать это.

Допустим, у вас есть шаблон и определить пользовательский помощник

{@append someParam="someValue"/} 

Тогда вы пишете помощника (описанный here)

(function() { 
    'use strict'; 

    // load dust if not already there 
    dust = require('dustjs-linkedin'); 

    // load helpers if not already done 
    require('dustjs-helpers') 

    // create our custom helper 
    // (note that 'append' is the name of the helper, as used in the template) 
    dust.helpers.append = function (chunk, context, bodies, params) { 
     // create a new chunk and map it to make it async 
     // you could also do `return chunk.write('somehtml')` if you use it sync 
     return chunk.map(function (chunk) { 
      chunk.end('<div>' + params.someParam + '</div>'); 
     }); 
    }; 
}(); 

Если вам нужен блок, как

{@append} 
    some string 
{/append} 

Вам нужно немного изменить помощника (спасибо odd.ness.io):

if (bodies.block) { 
    return chunk.capture(bodies.block, context, function(string, chunk) { 
     chunk.end('This is ' + string + ' we wrapped!'); 
    }); 
} 
// If there's no block, just return the chunk 
return chunk; 

Что должно дать вам: «Это какая-то строка, которую мы завернули!»

Примечание: Не тестировался, просто написана ^^

Надеются, что это помогает, хотя, возгласам.

Смежные вопросы