如何解决Embers Handlebar和Django Template之间的冲突

时间:2012-11-13 08:42:23

标签: django django-templates ember.js handlebars.js

我正在使用Ember和Django并很快发现Handlebar中的模板分隔符与Django模板的分隔符冲突。

所以我读了Django-embers http://pypi.python.org/pypi/django-ember/0.1

但它似乎无法正常工作。这就是问题所在:

如果我在APP.js中有这样的东西

var Ab = Em.Application.create({
  appDescription : 'HelloWorldApp'
});

我可以像这样轻松地在模板中呈现它

{% load ember %}
{% handlebars "" %}
    {{Ab.appDescription}}
{% endhandlebars %}

这很有效。 但是当我尝试使用模板标签例如{{#each}}时,事情就失败了。例如,我在APP.js中有这个

Songs.songsController = Ember.ArrayController.create({
    content: [],
    init: function(){
        // create an instance of the Song model
        var song = Songs.Song.create({
            title: 'Son of the Morning',
            artist: 'Oh, Sleeper',
            genre: 'Screamo'
        });
        this.pushObject(song);
    }
});

尝试使用以下方式渲染它:

{% load ember %}
{% handlebars "" %}
{{#each Songs.songsController}}
        <h3>{{title}}</h3>
        <p>{{artist}} - {{genre}}</p>
{{/each}}
{% endhandlebars %}

什么都没有出来!

它与我的代码无关,因为我移动了模板和JS文件outsite django并测试了代码,它按预期工作。

告诉我这里出了什么问题!

1 个答案:

答案 0 :(得分:1)

init函数是所有Ember对象的构造函数。基本上,为了在创建对象时放置所有绑定/观察者的东西,必须在覆盖构造函数时调用类层次结构的构造函数。实际上,这就像你将在其他编程语言中一样。