私はReact/Reduxの考え方から来ています。データ操作機能とデータは親から子に渡されます。コンポーネント自体はデータを変更するのではなく、意図はコンポーネントツリーをバックアップします。マルチレベルコンポーネントのコールバック角度が1.5
これをAngular 1.5のコンポーネントで再現しようとしています。次のことを考えてみましょう:
app.js
:
const appController = ($scope, data) => {
$scope.doSomething =() => console.log('Foooooo!');
};
app.html
:
<div>
<node
do-something="doSomething()"
></node>
</div>
node.js
:
app.component('node', {
// ...
bindings: {
doSomething: '&',
},
});
node.html
:
:
app.component('leaf', {
// ...
bindings: {
doSomething: '&',
},
});
leaf.html
:
<div ng-click="$ctrl.doSomething()"></div>
これは動作します。 leaf
のdiv
をクリックすると、'Foooooo!'
がコンソールに記録されます。しかし、ngClick
コールバックを変更してleaf
(または'foo'
などのリテラルだけ)のスコープ内の何かを渡し、にdoSomething
を変更して、引数がundefined
の引数を取るようにします。私の推測では、何とかデータをnode
に渡す必要がありますが、どうすればよいか分かりません。範囲内にラッパー関数を記述することなく、中間コンポーネントに沿って引数を渡す方法はありますか?私はarguments
を使ってみましたが、うまくいきません - 私が欲しいものを達成するための角度のある方法がありますか?
EDIT:
Plunkr:https://plnkr.co/edit/7L4Kd3rhJXoGlrHzecHf?p=preview
笑、node.js.それは混乱するかもしれません。また、plunkrがいいでしょう。 – TomSlick
バインドを式の代わりに参照するようにしてください。これは 'doSomething: '&'' 'doSomething: '=''ではなく、ノードとリーフマークアップのカッコを削除してください。 – TomSlick
あなたが試したコードを追加できますか? – rob