私はクロージャーアクションを理解しようとしていますが、コードをテストしています。私のindex.hbs
テンプレートでは、私はそうのようなコンポーネントをレンダリングしていますember - closureアクションでエラーが発生し、コンポーネントでアクションが提供されない限りページがレンダリングされません。
{{test-component test=(action 'foo')}}
を私のindex.js
コントローラでは、私はアクションfoo
定義している:私はアクションをトリガーするボタンがあり
foo: function() {
console.log('foo executed');
},
そして、私のtest-component.hbs
コンポーネント内をように:
<button {{action (action 'test')}}>Test Button</button>.
しかし、ページがクラッシュし、コンソールで次のエラーが表示されます。012私はページが私はあなたが閉鎖アクションを使用した印象の下にあったがtest-component.hbs
でtest
アクションを挿入することによって、再びレンダリングすることができます
、あなたのコンポーネントに何を配置する必要がありませんでしたか?私はここで間違って何をしていますか?
ありがとうございました。私のコンポーネントで使用していた構文は、別の状況で使用されるものですか? – PCR
はい。私は私の答えの最後の段落でそれを述べました。その構文は、現在のコンテキストからアクションを呼び出すことであり、コンポーネントそのものです。これは 'test-component'に' foo'を渡したときに使用するのと同じシンタックスで、 'index'コントローラでアクションを呼び出すために使用します。 '{{action(action 'actionName')}}'と言っても余計ですが、必要なのは '{{action 'actionName'}}'だけです。 「アクション」ヘルパー、すなわち'(action 'actionName')'はアクションを渡すために使われ、 '{{action 'actionName'}}'は現在のコンテキストでアクションを呼び出すために使われます – nem035