1

私はEmberとDjangoを使用していますが、ハンドルバーのテンプレート区切り文字が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ファイルを外部のdjangoに移動してコードをテストしたので、コードとは何の関係もありません。期待どおりに機能します。

ここで何が悪いのか教えてください!

4

1 に答える 1

1

このinit関数は、すべてのEmberオブジェクトのコンストラクターです。基本的に、オブジェクトを作成するときにすべてのバインディング/オブザーバーを配置するには、コンストラクターをオーバーライドするときにクラス階層のコンストラクターを呼び出す必要があります。実際、これは他のプログラミング言語で行うのと同じです。

于 2012-11-14T08:01:45.283 に答える