HTMLページに複数のキャンバス要素を作成するには、「歯」というカスタムカスタムディレクティブを使用しています。私は別のカスタムディレクティブ 'draw'を歯のディレクティブの中に配置し、キャンバスの要素がクリックされたときに 'draw'ディレクティブを呼び出したいと思います。私はこれを試しましたが、要素のクリックイベントは機能していません。私に解決策を提案してください。あなたが別のディレクティブ内directive
を使用する場合カスタムディレクティブテンプレート内でカスタムカスタムディレクティブを呼び出す
(function() {
var controller = function ($scope) {
};
controller.$inject = ['$scope'];
var teeth = function() {
return {
restrict: 'E',
controller: controller,
link: function ($scope, element, attrs) {
function init(){
var count = 5;
var html = '<div class="row">'
for(var i=0; i<count;i++){
html += '<div class="test">'+
'<canvas id="'+i+'" width="58px" height="58px" draw></canvas>'+
'</div>';
}
html += '</div>';
element.html(html);
}
init();
}
}
};
angular.module('graphApp').directive('teeth', teeth);
}());
(function() {
var controller = function ($scope) {
};
controller.$inject = ['$scope'];
var draw = function() {
return {
restrict: 'A',
scope: {
id: '@id'
},
controller: controller,
link: function ($scope, element, attrs) {
element.on('click',function(event){
alert('element '+$scope.id+' clicked');
});
}
}
};
angular.module('graphApp').directive('draw', draw);
}());
jQuery経由でHTMLを変更する代わりに、この方法で角度を自動的にコンパイルし、参照されたディレクティブをテンプレートからリンクします。 –