我想从父组件传递一个函数给子组件,并给它一个从父组件给孩子的参数。 (showOrHideSub =“item.showOrHideSub(item.id)”)我尝试过不同的方法,它不起作用。如何将参数传递给组件?
这是我想要使用子组件标记的html(父组件)。 vm是此范围的控制器:
<li ng-repeat="item in vm.menuItems">
<menu-item-comp id="item.id" showOrHideSub="item.showOrHideSub(item.id)" />
</li>
以下是子组件模板。 itemVm是这个组件的控制器:
<div id="{{itemVm.id}}" ng-mouseover="itemVm.showOrHideSub(itemVm.id)">
<div id="itemVm.subId" class="menuItemImgText">{{ itemVm.label }}</div>
这里是子组件JS:
module.component('menuItemComp', {
templateUrl: '/webapp/app/components/menu/menuItemComponent.html',
bindings: {
id: '<',
showOrHideSub: '&',
label: '<',
submenuId: '<',
},
controllerAs: 'itemVm',
controller: ['LogService', menuCtrl]
});
function menuCtrl($scope, LogService) {
var itemVm = this;
}
这里是showOrHideSub()函数在父控制器:
vm.showOrHideSub = function (submenu) {
console.log(submenu);
switch (submenu) {
case 'menuItemDivPositions':
console.log('position');
break;
case 'menuItemDivOther':
console.log('other');
break;
}
}
我知道在指令中,执行此操作的方式是通过诸如showOrHideSub =“item.showOrHideSub({item:item.id})之类的对象映射”,但它似乎不适用于组件。
谢谢你这么多。有效 :) –