Шаблон руль внутри шаблона
Как я могу создать шаблон внутри шаблона в руле?
Это мои шаблоны:
<script type="text/x-handlebars-template" id="animal-template">
<div class="locationSelect">
{{content}}
</div>
</script>
<script type="text/x-handlebars-template" id="cat-template">
<div>
I am cat
</div>
</script>
<script type="text/x-handlebars-template" id="dog-template">
<div>
I am dog
</div>
</script>
Я хочу загрузить соответствующий шаблон во время выполнения (cat-template или dog-template) внутри animal-template. Как я могу это сделать?
2 ответа
Решение
Частицы могут пригодиться, когда у вас есть кусок шаблона Handlebars.js, который необходимо использовать в нескольких различных контекстах
<script id="people-template" type="text/x-handlebars-template">
{{#each people}}
{{> person}}
{{/each}}
</script>
<script id="person-partial" type="text/x-handlebars-template">
<div class="person">
<h2>{{first_name}} {{last_name}}</h2>
<div class="phone">{{phone}}</div>
<div class="email"><a href="mailto:{{email}}">{{email}}</a></div>
<div class="since">User since {{member_since}}</div>
</div>
</script>
<script type="text/javascript">
$(document).ready(function() {
var template = Handlebars.compile($("#people-template").html());
Handlebars.registerPartial("person", $("#person-partial").html());
template(yourData);
}
</script>
http://blog.teamtreehouse.com/handlebars-js-part-2-partials-and-helpers
Вы можете вычислить templateName
Свойство вида элемента в соответствии с отображаемым элементом:
App.AnimalView = Ember.View.extend({
templateNameBinding: function () {
var kind = this.get('animal.kind');
return '%@-template'.fmt(kind);
}.property('animal.kind')
});
Затем в шаблоне контейнера визуализируйте элементы через их представление:
<script type="text/x-handlebars-template" id="animal-template">
<div class="locationSelect">
{{#for animal in content}}
{{view App.AnimalView animalBinding="animal"}}
{{/for}}
</div>
</script>