{{each}}辅助上下文的输入值是否不同?

时间:2012-10-04 06:56:15

标签: ember.js

我正在使用emebr-1.0.pre.js

在每个帮助程序上下文中都有疑问,请在下面的代码下面进行参考。在输出UI标题中替换" book1"和" book2"但输入字段为空。

我怀疑在每个助手中使用了哪个上下文,在{{each}}帮助者中,这个'是什么??

window.App = Ember.Application.create({});


App.Book = Ember.Object.extend({
   title : null,
  author : null
 });

BooksController.js

App.BooksController = Ember.ObjectController.extend({
    content : [
                App.Book.create({title : "Book1", author : 'author1'}),
                App.Book.create({title: 'Book2', author : 'author2'})
               ]           
});

BooksListView.js

 App.BooksView = Ember.View.extend({
  templateName : "books_list",
  controllerBinding : "App.BooksController"
})

车把

{{#each content}}
   <label>{{this.title}}</label>
   {{view Ember.TextField valueBinding="this.author"}}
{{/each}}

JSFiddle is here

1 个答案:

答案 0 :(得分:1)

首先,BooksListViewcontrollerBinding设置为App.BooksController

它应该是App.booksController之类的东西,因为你想把它绑定到一个实例而不是一个类:

App.booksController = App.BooksController.create();

App.BooksListView = Ember.View.extend({
   controllerBinding: "App.booksController"
});

关于{{each}}上下文,this引用当前对象,因此按预期工作。除非您不应在{{this.aproperty}}帮助上使用{{each}},否则只需撰写{{aproperty}}

{{#each content}}
  <label>{{title}}</label>
  {{view Ember.TextField valueBinding="author"}}
{{/each}}

And here is the JSFiddle which works。我故意添加了{{this}},以便让您了解它引用的对象。