テンプレートを使用してコンポーネントにコールバックをバインドしようとしています。テンプレートには、別のディレクティブのインスタンスが含まれています。これはちょうどうまくいかないようです。私はモーダルからディレクティブを呼び出していますが、これが問題を引き起こすかどうかはわかりません。私は以前の質問で示唆されたソリューションの多くを試したが、まだ運がなかった。私は、デバッガでそれを実行し、 '$ ctrl.onSelectionChangedは' それが必要のように定義されていますテンプレートタグを使用してディレクティブへのコールバックをアングルでバインドします
function (locals) { return parentGet(scope, locals); }
マイコード:
私-component.js:
inner-コールバックを参照しないディレクティブはありますか?
angular.module('myModule')
.component('myComponent', {
template: '<div class="container-fluid"> <inner-directive><button class="btn btn-default center-block" ng-click="$ctrl.onSelectionChange({items_list: $ctrl.selectedItems})">Button</button> </inner-directive> </div>',
bindings: {
$router: '<',
onSelectionChange: '&'
},
controller: MyComponentController
});
/* @ngInject */
function MyComponentController(MyService, $filter, $log, $q) {
var $ctrl = this;
$ctrl.$routerOnActivate = function() {
};
$ctrl.selectedItems = [];
}
呼び出す成分-controller.js:
function CallingComponentCtrl(toastr, $scope, $uibModal, $log) {
var $ctrl = this;
$ctrl.loadDone = false;
$ctrl.grid = {
enableSorting: true,
data: [],
columnDefs: [
{name: 'id'},
{name: 'name'},
{name: 'description'}
],
enableRowSelection: true,
enableRowHeaderSelection: false,
multiSelect: false,
noUnselect: true,
onRegisterApi: function (gridApi) {
$ctrl.gridApi = gridApi;
}
};
this.$onInit = function() {
if (angular.isUndefined($ctrl.abc)) {
return;
}
syncData();
$ctrl.loadDone = true;
};
this.$onChanges = function() {
// TODO
};
function syncData(){
$ctrl.grid.data = $ctrl.abc;
}
$ctrl.myFoo = function(items_list) {
alert("This is never happening");
};
$ctrl.onPress = function (event) {
var modalInstance = $uibModal.open({
template: '<my-component on-selection-change="$ctrl.myFoo(items_list)"></my-component>',
windowClass: 'modal-window'
});
};
}
任意の考え?
あなたは** **呼び出し成分-controller.jsの完全なコードを追加することができますか? ** MyComponentController ** – JavierFromMadrid
のコード私はそれをすべて公開することができないので、確かに、私はいくつかのものを保ちました。しかし、すべての関連するものがここにあります。 – orizis
もし私がそれをよく理解していれば、あなたは** my-component **の中に指示を表示していて、その指示は**内部指示**の中にあります。問題は、ボタン '関数が機能していないことです。それは正しい? – JavierFromMadrid