1

エンティティの配列を反復処理するテンプレートがあります。

いくつかのロジックに基づいて、これらのエンティティの一部に「削除」ボタンを表示したいと思います。これを行うための最良の方法を理解しようとしています。

実際の削除ボタンは、次のマークアップでレンダリングされます。マークアップには、組み込みのアクションヘルパーへの呼び出しが含まれていることに注意してください。

<button class="btn btn-danger" {{action "removeEntityFunctionInController" entitity}}><i class="icon-remove icon-white"></i> Remove</button>

これと交換したい

{{optionalRemoveEntityButton entity}}

私は論理のないテンプレートを作成しようとしているので、次のようなヘルパーを作成できると思いました:

Ember.Handlebars.registerHelper('optionalRemoveEntityButton', function(entity, options) {
  logicForDeterminingWhetherToShowView 
  removeEntityButtonView = howDoILoadAViewProgrammatically?
  return removeEntityButtonView;
});

プログラムでビューをロードする方法がわかりません。このヘルパーは単純なマークアップを返すだけではないため、ビューを使用したいと思います。{{action}}ヘルパーへの呼び出しも含まれています。

私がやろうとしていることを達成するためのより良い方法がない限り?

4

1 に答える 1

1

エンティティの配列を反復処理するテンプレートがあります。いくつかのロジックに基づいて、これらのエンティティの一部に「削除」ボタンを表示したいと思います。これを行うための最良の方法を理解しようとしています。

これはかなり一般的なユースケースです。この種のロジックのアイデアの場所はコントローラーにあります。

実際の削除ボタンは、次のマークアップでレンダリングされます。マークアップには、組み込みのアクションヘルパーへの呼び出しが含まれていることに注意してください。<button class="btn btn-danger" {{action "removeEntityFunctionInController" entitity}}><i class="icon-remove icon-white"></i> Remove</button>

これを置き換えたい{{optionalRemoveEntityButton entity}}

元のマークアップを保持することをお勧めします。

私がやろうとしていることを達成するためのより良い方法がない限り?

テンプレートにロジックを含めないことは良い目標ですが、一般的に、それは多くのハンドルバーヘルパーを構築することを意味するものではありません。通常、ヘルパーを作成するのは、多くのビューで繰り返されている表示ロジックを見つけた場合のみです。

{{#if}}別の方法は、ヘルパーを使用してボタンを条件付きで表示することです。

{{#if showDeleteButton}}
  <button class="btn btn-danger" {{action "removeEntityFunctionInController" entitity}}><i class="icon-remove icon-white"></i> Remove</button>
{{/if}}

ArrayControllerのitemControllerプロパティを、個々のアイテムをラップするコントローラー(おそらくObjectController)の名前に設定する必要があります。次に、showDeleteButtonそのitemControllerでメソッドを定義します。この設定の詳細については、 Ember.ArrayControllerのドキュメントを参照してください。

于 2013-02-05T13:17:29.077 に答える