2

ember.js 1.0.pre次のフィドルが動作中に動作しない理由を理解しようとしてい0.9.5ます。

バージョン0.9.5(動作中)

http://jsfiddle.net/tPfNQ/1/

バージョン1.0.pre(機能していません)

http://jsfiddle.net/hSzrZ/1/

私はそれhandlebars.jsがの最新のビルドに含まれていないことを知っています、ember.jsそして私はそれを自分で含める必要があります。

これが私が使用しているコードです:

<script type="text/x-handlebars">
    {{#view Ember.Button target="Welcome.booksController" action="loadBooks"}}
        Load Books
    {{/view}}

    {{#collection contentBinding="Welcome.booksController"}}
        <i>Genre: {{content.genre}}</i>
    {{/collection}}
</script>


Welcome = Ember.Application.create();

Welcome.Book = Ember.Object.extend({
    title: '',
    author: '',
    genre: ''
});

var data = [ { "title": "Ready Player One", "author": "Ernest Cline", "genre": "Science Fiction" }, { "title": "Starship Troopers", "author": "Robert Heinlein", "genre": "Science Fiction" }, { "title": "Delivering Happiness", "author": "Tony Hsieh", "genre": "Business" } ];

Welcome.booksController = Ember.ArrayController.create({
    content: [],
    loadBooks: function(){
        var self = this;
        data.forEach(function(item){
            self.pushObject(Welcome.Book.create(item));
        });
    }
});​

ソースは次のとおりです:http ://www.andymatthews.net/read/2012/03/07/Getting-Started-With-EmberJS

4

1 に答える 1

4

これは、1.0へのアップグレードで最も一般的な問題です。

デフォルトのビューコンテキストがcontext、ビュー自体ではなくビューのコンテキストに変更されました。
したがって、ビューのコンテンツから値にアクセスするには、を介して値を指定する必要がありますview.content.xxx

{{#collection contentBinding="Welcome.booksController"}}
    <i>Genre: {{view.content.genre}}</i>
{{/collection}}

この特定のケースでは、必要に#each応じてヘルパーを使用することもできます。

{{#each Welcome.booksController}}
    <i>Genre: {{genre}}</i>
{{/each}}

#collectionヘルパーを同じように動かすという話もあると思います。

于 2012-09-10T15:21:49.950 に答える