我正在使用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。
答案 0 :(得分:1)
首先,BooksListView
将controllerBinding
设置为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}}
,以便让您了解它引用的对象。