0

.templateName如果我在 html 中使用:将 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

谢谢你的帮助!

4

2 回答 2

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/

于 2011-12-27T21:14:56.253 回答
0

尝试defaultTemplate在您的视图中使用:

defaultTemplate: SC.Handlebars.compile('<label><input type="checkbox" {{bindAttr checked="value" disabled="disabled" tabindex="tabindex"}} > {{title}}</label>')

它对我有用。

于 2011-12-27T21:10:14.417 回答