2012-05-12 3 views
1

С dust.js, можно ли вывести ключ JSON?Выход Dust.js JSON ключ

Т.е. как я могу выводить ключевые «имя» и «профиль» без жесткого кодирования их в моем шаблоне?

{ 
name: "Foo", 
profile: { 
      name: "Bar" 
     } 
} 

Окончательный текст, имя и профиль JSON не закодированы.

name Foo 
profile - name - Bar 

ответ

-1

Пыль не имеет встроенной функциональности, потому что философски, JSON никогда не должен иметь данных в ключе. Попробуйте изменить модель данных на что-то вроде:

{ 
    name: "Foo", 
    profile: { 
    fields: [ 
     { 
     title: "name", 
     value: "Bar" 
     } 
    ] 
    } 
} 
3

уверен, что вы можете. Определим сечение следующим образом:

{@keyvalue:cont} 
    {key} - {value} 
{/keyvalue} 

затем переопределить JSON контекст как так:

cont:{ 
    name: "Foo", 
    profile: "Bar" //I'm simplifying this a bit for the sake of this example 
} 

это так, что контекст для KeyValue секции выше получает ограничивается только «продолжение». то вы можете определить вспомогательный ключ ключевого значения следующим образом:

"keyvalue": function(chunk, context, bodies){ 
    var items = context.current(), //this gets the current context hash from the Context object (which has a bunch of other attributes defined in it) 
     ctx; 

    for (key in items) { 
    ctx = {"key" : key, "value" : items[key]}; 
    chunk = chunk.render(bodies.block, context.push(ctx)); 
    } 

    return chunk 
} 

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

Это особенно полезно, если, например, вам необходимо определить атрибуты HTML-тегов в вашем контексте - я бы не хотел определять набор атрибутов и THEN их соответствующий набор значений в отдельных ключах. Я бы хотел их вместе. легче читать, проще управлять.

2

Метод ниже почти такой же, как и ответ @ asyraf9, но без переопределения JSON и примера использования.

dust.helpers.iterate = function(chunk, context, bodies, params) { 
    params = params || {}; 
    var obj = params['on'] || context.current(); 
    for (var k in obj) { 
     chunk = chunk.render(bodies.block, context.push({key: k, value: obj[k]})); 
    } 
    return chunk; 
} 

Источник: https://github.com/rashad612/dustjs-helpers/commit/9039130dc060a4bf3e93856601891a7da9047bac

Используйте его в шаблоне, как:

{#myobject.myarray} 
    {@iterate on=.} 
     {key} - {value} 
    {/iterate} 
{/myobject.myarray} 

Он отображает все ключи и значения объектов внутри массива.

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

  • Нет связанных вопросов^_^