2つのカスタムディレクティブmy-tileとmy-tile-itemを作成しようとしています。カスタムディレクティブのコントローラはng-repeatで動作しませんか?
"my-tile"は、データ配列の引数を受け入れるメインディレクティブです。
"my-tile-item"は、 "my-tile"内の個々のタイルを表します。
しかし、my-tile-itemコントローラのbtnOkClick()メソッドは機能しません。
コード:
https://codepen.io/anon/pen/zdWgVG
HTML:
<div my-tile tiles="mainCtrl.tiles"></div>
私のタイルテンプレート:
<script type="text/ng-template" id="myTile.html">
<div my-tile-item ng-repeat="tileItem in myTileCtrl.tiles" class="my-tile">
<div>{{tileItem.id}}</div>
<button ng-click="myTileItemCtrl.btnOKClick()">OK</button>
</div>
</script>
私のタイトルディレクティブ:
angular.module('app').directive('myTile',
[
myTile
]);
function myTile() {
return {
restrict: 'AE',
scope: {
tiles: '='
},
controller: ['$scope', MyTileController],
controllerAs: 'myTileCtrl',
templateUrl: 'myTile.html',
link: function (scope, iElement, iAttrs) {
console.log('abc');
}
};
function MyTileController($scope) {
var ctrl = this;
ctrl.tiles = $scope.tiles;
}
}
私のタイル項目ディレクティブ:
angular.module('app').directive('myTileItem',
[
myTileItem
]);
function myTileItem() {
return {
restrict: 'AE',
scope: {
},
controller : ['$scope', MyTileItemController],
controllerAs : 'myTileItemCtrl',
link: function (scope, iElement, iAttrs) {
}
};
function MyTileItemController($scope) {
var ctrl = this;
ctrl.btnOKClick = function() {
alert('OK Clicked'); // ********* does NOT work *************
}
}
}
解決策が見つかりませんでしたが、問題の一部はこれです:あなたの 'ng-click'は決して考慮されません。私は 'onclick = "console.log(' test '); myTileItemCtrl.btnOKClick()" 'を実行している間、' ng-click = "console.log(' test '); myTileItemCtrl.btnOKClick()少なくともログ "テスト"を表示します(ただし、関数は呼び出されていないようですが、エラーはありません) – Kaddath