私は、開始と停止の2つのアクションを持つ非常に単純なコンポーネントを持っています。これらはボタンをクリックすると起動します。最初のアクションはルートまでバブリングされ、期待どおりに機能しますが、2番目のアクションはコンポーネントで発生しますが、ルートには決して出ません。Ember.js(v2.4.5)のコンポーネントが第2のアクションを追い越していない
私はEmberを使い始めたばかりですが、コンポーネントは複数のアクションを実行することができますか?
コンソールにエラーはありません。ボタンは何もせず、ルートからのコンソールログは表示されません。
コンポーネントアクション
actions: {
start() {
console.log('component start called');
this.sendAction('start', this.get('item'));
},
stop() {
console.log('component stop called');
this.sendAction('stop', this.get('item'));
}
}
ルートアクション
actions: {
start (server) {
console.log('route start called');
server.set("settings.amazonTask", 'start');
server.save();
},
stop (server) {
console.log('route stop called');
server.set('settings.amazonTask', 'stop');
server.save();
}
}
テンプレート
<button type="button"
class="btn btn-default btn-sm" {{action "start"}}>
Turn on
</button>
<button type="button"
class="btn btn-default btn-sm" {{action "stop"}}>
Turn off
</button>
これは当然のことながら、私は開始のためのアクションを設定しましたが、停止のアクションは忘れました。私はあなたのコメントの残りの部分について少し混乱していますが、私が実際にやっていることをお勧めします。ドキュメント/ガイドへのリンクか詳細な例を提供できますか? –
[オリジナルのブログ投稿](http://emberjs.com/blog/2015/06/12/ember-1-13-0-released.html#toc_closure-actions)をチェックアウトしている可能性があります。 'sendAction'を使用しないことをお勧めします。なぜなら、その混乱の魔法で、通常はthis.attrs ['action']()' whisと同じですが、明らかに結果を与える明確な関数呼び出しです。 – Lux