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 回答