0

コントローラーからビューに情報を表示しようとしていますが、情報が表示されません。

これまでのコードを示すためのフィドルがあります。

フィドル

コンソールで MovieTracker.movi​​eController.content を確認すると、2 つのオブジェクトが表示されます。ただし、HTML が正しく表示されません。何が問題なのですか?

これが私の見解です:

<script type="text/x-handlebars">
{{#each MovieTracker.movieController}}
    <h2>{{title}}</h2>
    <h3>{{rating}}</h3>
{{/each}}

</p>

そして私の Ember アプリケーション + コントローラ:

// Create our Application
MovieTracker = Ember.Application.create();

// Inherit outlet Support
MovieTracker.ApplicationController = Ember.Controller.extend();

// ArrayController to create some new Movies
MovieTracker.movieController = Ember.ArrayController.create({
content: [], 
init: function(){
    var kidsMovie = MovieTracker.Movie.create({
        title: 'Toy Story',
        rating: 4
    });
    this.pushObject(kidsMovie);

    var avengers = MovieTracker.Movie.create({
        title: 'The Avengers',
        rating: 5
    });
    this.pushObject(avengers);
}
});

// Start our Ember Application
MovieTracker.initialize();​
4

1 に答える 1

1

私はあなたのフィドルを更新しました(ここを参照してください:http://jsfiddle.net/schawaska/hKPQy/24/)コントローラーインスタンスにバインドされた「映画」ビューを持ち、コントローラーコンテンツにバインドされたコンテンツプロパティも追加しました。また、ember とハンドルバーの最新バージョンへの参照を追加しました。

これで、いくつかのテンプレートができました。

<script type="text/x-handlebars" data-template-name="application">
    <h1>Movie Tracker</h1>
    {{view MovieTracker.MovieTrackerView }}
</script>

<script type="text/x-handlebars" data-template-name="movie-tracker">
    Movies:<br />
    {{#each movie in content}}
        <h2>{{movie.title}}</h2>
        <h3>{{movie.rating}}</h3>
    {{/each}}
</script>

eachこれで、ヘルパーは各値を に割り当てるコレクションを反復処理しますmovie。これは、モデル (これも欠落していたので作成しました) とそのプロパティです。

コントローラーとビューは次のようになります。

MovieTracker.moviesController = Ember.ArrayController.create({
    content: [], 
    init: function(){
        // you missed the call to _super()
        this._super();

        var list = [
            MovieTracker.MovieModel.create({
                title: 'Toy Story',
                rating: 4
            }),
            MovieTracker.MovieModel.create({
                title: 'The Avengers',
                rating: 5
            })];

        // also, it's a good idea to use .set whenever you can
        this.set('content', list);
    }
});

MovieTracker.MovieTrackerView = Em.View.extend({
    templateName: 'movie-tracker',
    controllerBinding: 'MovieTracker.moviesController',
    contentBinding: 'controller.content'
});
于 2012-11-21T17:22:51.450 に答える