1

私のモデル「content.id」には、「123」などの文字列が含まれています。

{{view Em.TextArea idBinding="content.id"}}

このビューの ID を「123」に設定するだけでなく、基本的に使用される文字列をカスタマイズして「message-123」にしたいと考えています。悲しいことに、Ember はバインドを関数にすることを許可していないため、問題は解決します (コントローラーでそのような関数を定義できます)。

これを達成するための最良の方法は何ですか?

4

1 に答える 1

3

コントローラ(または他の場所)で計算されたプロパティを定義できます。

コントローラー

MyApp.ApplicationController = Ember.Controller.extend({
  content: "a-content",

  editedContent: function() {
      return "message-" + this.get('content');
  }.property('content')
});

景色

MyApp.FooView = Ember.View.extend({
    tagName: 'p'
});

テンプレート(コンテンツはStringここにあります)

{{#view MyApp.FooView elementIdBinding="editedContent"}}
    {{content}}
{{/view}}

そして、JSFiddleはここにあります

編集

プロパティはコントローラーeditedContentに属しているため、ビューはどのようにプロパティを確認できますか?ApplicationController

ルーターは、起動後、定義されApplicationViewていない場合は、またはそのテンプレートを自動的にレンダリングします。ApplicationView詳細が必要な場合は、Emberガイド「Ember.jsルーターについて:入門書」をお読みになることをお勧めします。

また、 Ember Blog-1.0 Prereleaseで読むことができるように、デフォルトのビューコンテキストはそのコントローラーであるため、コントローラープロパティを{{editedContent}}直接取得します。editedContent

ヘルパーは{{#view}}コンテキストを変更しなくなり、代わりにデフォルトで親コンテキストを維持します。または、提供されている場合はコントローラープロパティを使用します。コンテキストプロパティを直接オーバーライドすることもできます。順序は次のとおりです。

  • 指定されたコントローラー
  • 提供されるコンテキスト(通常はハンドルバーによる)
  • parentViewのコンテキスト(ContainerViewの子の場合)
于 2012-11-05T18:55:46.323 に答える