我来自 React / Redux 思维模式,其中数据操作功能以及数据从父级传递到子级到孙子级等。组件本身不会修改数据,而是将它们的意图传递回组件树。
我正在尝试使用 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
:
<div>
<leaf
do-something="$ctrl.doSomething()"
></leaf>
</div>
leaf.js
:
app.component('leaf', {
// ...
bindings: {
doSomething: '&',
},
});
leaf.html
:
<div ng-click="$ctrl.doSomething()"></div>
这行得通。单击div
in时将记录到控制台。但是,如果我将回调更改为传递范围内的某些内容(甚至只是一个文字,例如)并更改为接受一个参数,该参数是. 我的猜测是我必须以某种方式传递数据,但我不知道如何。有没有办法通过中间组件传递参数而不必在范围内编写包装函数?我试过使用,但这不起作用——是否有一些 Angular 方法来完成我想要的?leaf
'Foooooo!'
ngClick
leaf
'foo'
doSomething
app.js
undefined
node
arguments
编辑:
Plunkr:https ://plnkr.co/edit/7L4Kd3rhJXoGlrHzecHf?p=preview