親コンポーネントから子コンポーネントに関数を渡して、それに子コンポーネントの親コンポーネントから与えられた引数を渡したいとします。 (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})"などのオブジェクトマッピングによるものですが、コンポーネントでは機能しないようです。
ありがとうございました。出来た :) –