我正在製作一個包含畫布的指令,我無法在所有需要的地方訪問它。我目前在指令的link
中設置畫布並在其上繪製了一些初始元素,但我還需要訪問指令控制器中的相同畫布以更新它。此刻我的指令,聲明如下所示:我可以通過指令的鏈接函數設置範圍屬性嗎?
angular.module('myModule').directive('myCanvasDirective', CanvasDirective);
function CanvasDirective() {
var linker = function (scope, element, attrs) {
scope.vm.ctx = element[0].childNodes[0].getContext('2d');
//do some initial drawing using scope.vm.ctx
//this works
}
return {
priority: 1001,
restrict: 'E',
link: linker,
scope: {
displayValue: '=displayValue'
},
template: '<canvas id="myCanvas" width="80" height="80" />',
controller: MyCanvasController,
controllerAs: 'vm',
bindToController: true
};
};
function MyCanvasController() {
var vm = this;
vm.draw = function() {
vm.ctx.strokeStyle = '#808080';
//vm.ctx is unavailable here despite being attached to scope in linker
};
vm.draw();
};
我怎樣才能在MyCanvasController
我的畫布背景下訪問?由於此指令將在頁面上多次使用,因爲有多個ngRepeat
s,我不想只使用document.getElementById()
。
謝謝。我沒有意識到在控制器之後發生了「連接」 - 或者確實可以將控制器傳遞給鏈接功能! – Mourndark