2014-01-29 2 views
1

У меня есть частичный шаблон, представляющий одну строку в таблице, которая также используется непосредственно из Javascript (см. Фон ниже). Вот как я использую его в качестве частичной:Как установить @key внутри частичного шаблона? (Или почему это невозможно?)

{{#each this}} 
{{> my_onerow}} 
{{/each}} 

Вот упрощенный my_onerow:

<div>{{@key}}: {{x}}, {{y}}</div> 

У меня есть эти шаблоны, доступные в JST.my и JST.my_onerow, поэтому мой JavaScript выглядит следующим образом:

var obj={ 
    one:{x:"this",y:"that"}, 
    two:{x:55,y:77}, 
    three:{x:"hello",y:"world"} 
    }; 
$('body').append(JST.my(obj)); 

@key имеется в частичном, поэтому я получаю это:

<div>one: this, that</div> 
<div>two: 55, 77</div> 
<div>three: hello, world</div> 

Затем, когда я хочу добавить еще одну строку, прямо из JavaScript, я:

var newObj = {x:"new",y:"entry"}; 
$('body').append(JST.my_onerow(newObj)); 

Это также работает хорошо, но @key является "", и я не знаю, как определить его , Это не работает:

var newObj = {"@key":"four",x:"new",y:"entry"}; 

Мой вопрос: как я могу определить @key при использовании JST.my_onerow шаблона непосредственно? Или, если это невозможно, может ли кто-нибудь дать представление о внутренних элементах Handlebars, чтобы объяснить, почему это не может быть легко добавлено?

(я использую рули 1.3.0.)


Справочную информацию: Я делаю это, создавая его как обычный шаблон, составленный в JST, то я делаю все шаблоны доступны частичными с этой линией :

Handlebars.partials = JST; 

Этот бит отлично работает. Я просто упоминаю об этом как о стороне.

ответ

0

(Self-ответ с хак-иш обходной путь я в настоящее время используется, только в случае, если то, что я действительно хочу сделать, это невозможно.)

Что я в настоящее время сделать предварительную обработку данных, чтобы добавить ключи объектов внутри часть ценности, как член key. Это делается непосредственно перед использованием JST.my:

for(key in obj)obj.key = key; 
$('body').append(JST.my(obj)); 

Тогда я изменил my_onerow выглядеть следующим образом:

<div>{{key}}: {{x}}, {{y}}</div> 

Теперь, конечно, я могу указать key достаточно легко при добавлении строки непосредственно из JavaScript.

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