我想從父組件傳遞一個函數給子組件,並給它一個從父組件給孩子的參數。 (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})之類的對象映射」,但它似乎不適用於組件。
謝謝你這麼多。有效 :) –