1

次のコードがあります

    Todos = Ember.Application.create();

    Todos.Todo = Ember.Object.extend({
        title: null,
        isDone: false
    });

    Todos.TodosController = Ember.Object.extend({
        // We need an array to hold our Todo objects
        todos: Ember.A(),

        init: function(){
            debugger;
            var items = this.get('todos');
            items.addObject(Todos.Todo.create({title: "This is an Ember Item"}));
            items.addObject(Todos.Todo.create({title: "This is another Ember Item"}));
        },

        remainingCount: function(){
            return this.get('todos').filterProperty('isDone', false).length;
        }.property('todos.@each.isDone')

    });

    Todos.controller = Todos.TodosController.create();

    Todos.TodoView = Ember.View.extend({
        templateName: 'todos'
    });

</script>

次のハンドルバー フックが thml 内で定義されています。しかし、何らかの理由でテンプレートがレンダリングされていません。調べHandlebars.templatesてみると、返されたオブジェクトにリストされている todo が表示されます。ここで何が欠けていますか。

ここに画像の説明を入力

編集

.handlebars ファイル内でテンプレートを定義することはできますか?

編集

これはapp.js内で行いました。

$.extend(Ember.TEMPLATES, Ember.TEMPLATES, Ember.Handlebars.templates);

しかし、それも役に立たなかったようです。下の画像でわかるように、テンプレートは にリストされていEmber.TEMPLATESます。しかし、何らかの理由でそれらを拾っていません。

ここに画像の説明を入力

また、ボディタグの間にhtmlはありません。私はそこに何かを持っているべきかどうかわかりません。

<body></body>

4

2 に答える 2

1

すでにここで回答済み

ハンドルバー テンプレートをプリコンパイルするには、ember-precompile パッケージをインストールする必要があります

make ユーティリティ (Mac の場合) が必要な場合は、インストールします

次に、次のように、コンパイル済みのテンプレートを index.html に含めます。

    <script type="text/javascript">
        App = Ember.Application.create({});
    </script>
    <!-- templates -->
    <script src="js/templates/templates.js"></script>
    <!-- app init -->
    <script type="text/javascript">
        App.initialize();
    </script>
于 2013-08-11T17:48:44.767 に答える
0

@MilkyWayJoe

アプリケーション テンプレートについておっしゃっていたことが役に立ちました。ありがとうございます。プリコンパイラが問題の原因だと思います。アプリケーション テンプレート内のパーシャルを表示できるようになりました。しかし、linkTo何らかの理由で機能しないようです。linkToHTMLページ内でテンプレートを宣言すると機能します!!

これはコンテキスト内のプリコンパイラです。 http://blog.selvakn.in/2012/05/precompiling-handlerbars-tempates-with.html

ファイルを表示できるようになりました。ただし、機能させるには、次の行を追加する必要がありますapp.js

// To register partials
$.each(Ember.Handlebars.templates, function(i, template){
    if(i.indexOf('_') === 0){
        Ember.Handlebars.partials[i.substring(1, i.length)]  = template;
    }
});

// To let Ember.Handlebars know about the newly added templates
$.extend(Ember.TEMPLATES, Ember.TEMPLATES, Ember.Handlebars.templates);

私を助けたのは、最初にテンプレートを 1 つずつ html 本文に追加してから、それらを独自のファイルに移動することです。また、data-template-nameは無視できるプロパティではないことに注意してください。1つでもあれば、あらゆる種類の問題が発生します。

編集

このノード パッケージの方がうまく機能します。

Emberjs ハンドルバーのプリコンパイル

于 2013-03-21T18:30:10.040 に答える