Может ли работать привязка при использовании.template вместо.templateName в Ember.js?
Привязка представления HTML к данным работает, если я использую .templateName
: в html:
<script type="text/x-handlebars" data-template-name="foo">
TITLE, <b>{{pageTitle}}</b>
</script>
в js:
view.set('templateName','foo');
Сгенерированная структура HTML:
<div id="ember195" class="ember-view">
TITLE,
<b>
<script id="metamorph-1-start" type="text/x-placeholder">
mainmenu
<script id="metamorph-1-end" type="text/x-placeholder">
</b>
</div>
Но если я использую .template
вместо .templateName
:
var tmpl = Handlebars.compile('TITLE, <b>{{pageTitle}}</b>');
view.set('template',tmpl);
Сгенерированная структура HTML не имеет тегов-заполнителей вокруг {{pageTitle}}
содержимое и, следовательно, не обновляется при изменении pageTitle...
<div id="ember201" class="ember-view">
TITLE,
<b>mainmenu</b>
</div>
Есть ли в любом случае использование .template
все еще иметь обязательную работу? Или я должен использовать .templateName
?
Спасибо за вашу помощь!
2 ответа
Решение
Я не могу воспроизвести ваше поведение. Следующий код выводит то же самое для каждого другого представления...
Рули:
<script type="text/x-handlebars" data-template-name="foo">
TITLE, <b>{{App.pageTitle}}</b>
</script>
<script type="text/x-handlebars">
Change the title: {{view Ember.TextField valueBinding="App.pageTitle"}}
</script>
JavaScript:
App = Ember.Application.create({
pageTitle: 'my page title'
});
Ember.View.create({
templateName: 'foo'
}).append();
var view1 = Ember.View.create();
view1.set('templateName', 'foo');
view1.append();
Ember.View.create({
template: Ember.Handlebars.compile('TITLE, <b>{{App.pageTitle}}</b>')
}).append();
var view2 = Ember.View.create();
view2.set('template', Ember.Handlebars.compile('TITLE, <b>{{App.pageTitle}}</b>'));
view2.append();
Смотрите http://jsfiddle.net/DTfMZ/
Попробуйте использовать defaultTemplate
по вашему мнению:
defaultTemplate: SC.Handlebars.compile('<label><input type="checkbox" {{bindAttr checked="value" disabled="disabled" tabindex="tabindex"}} > {{title}}</label>')
Это сработало для меня.