2017-07-05 16 views
0

Emberの新しい機能ここにあります。私はアクションを実行する方法を理解しようとしており、そのアクションの製品は#withヘルパーによって使用されます。以下は、私のコードの例を次に示します。with with helper内でアクションを実行

{{#navigation-container as |navigationContainer|}} {{#with (action navigationContainer.previousPage model) as |prev|}} {{link-to (t 'navigation.previous') (concat 'course-run.' prev.modelName) prev activeClass="o25" title=prev.title}} {{/with}} {{/navigation-container}}

navigation-containerpreviousPageそのうちの1つは、いくつかのアクションを、公開するコンポーネントです。 previousPageは、私がいくつかのリンクを作成し、ember-keyboardで使用するモデルを返します。

prevが定義されていないため、link-toがルートを構築できないというエラーが表示されます。アクションは実行中で、このブロックのすぐ上に正しく戻っています。したがって、ブロックwithが問題であると仮定しています。

ありがとうございました!

+0

次の '{{#with(action navigationContainer.previousPage model)as prev |}}'コードスニペットでアクションを作成しても問題ありません。 'prev.modelName'はどういう意味ですか? 'prev'自体は関数であり、' modelName'というプロパティは含まれていません。アクションはこの宣言を持つテンプレートでは単独では実行されません。それをコンポーネントに渡してjsファイル内で実行する必要があります。あなたが達成しようとしていることは、私が理解していることが正しいなら、不可能ではないにしても混乱しています。あなたが達成しようとしていることを教えてください。テンプレート内またはsth内でアクションを実行しようとしていますか?それ以外は? – alptugd

答えて

0

あなたはこれが間違っていると思います。 withヘルパーでは、アクションを実行できません。 (action navigationContainer.previousPage model)の結果は基本的に最初のパラメータmodelnavigationContainer.previousPageを実行する新しいクロージャ関数であり、次のパラメータは新しい関数に与えるパラメータです。

あなたが<button onclick={{action prv "bar"}}></button>ような何かを行うのであれば、これは最初のパラメータmodelと次"bar"で実行される関数navigationContainer.previousPageになります。

テンプレート内に関数の結果が必要な場合は、計算されたプロパティを使用する必要があります。