2

私はemebr-1.0.pre.jsを使用しています

参照用の次のコードの下で、各ヘルパーコンテキストに疑問を持っています。出力UIでは、タイトルが「book1」と「book2」に置き換わりますが、入力フィールドは空です。

私の疑問は、{{each}}ヘルパー内の各ヘルパーでどのコンテキストが使用されているかです'this'は何を指しますか?

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はこちらです。

4

1 に答える 1

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}}

そして、これが機能する JSFiddleです。{{this}}どのオブジェクトを参照しているかを確認できるように、意図的に追加しました。

于 2012-10-04T10:18:35.530 に答える