【发布时间】:2017-02-14 10:42:15
【问题描述】:
我想从指令中的链接函数访问模板的 DOM 对象,但我不能。我想在一些文件上传后访问这个画布对象来改变它
MakeApp
.directive('fileUploaderDir', function ($location) {
return {
restrict: 'A',
scope: {
},
template: function (elem , attr) {
if(attr.maxNumberFile<=1){
return'<tbody ng-init="changeCanvas">' +
'<tr ng-repeat="item in uploader.queue">' +
'<td ><strong>{{ item.file.name }}</strong>' +
'<canvas id="canvasImgUpload"/>' +
'</td>' +
'<td ng-show="uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>' +
'<td ng-show="uploader.isHTML5">' +
'<div class="progress" style="margin-bottom: 0;">' +
'<div class="progress-bar" role="progressbar" ng-style="{ \'width\': item.progress + \'%\' }"></div>' +
'</div>' +
'</td>' +
'<td class="text-center">' +
'<span ng-show="item.isSuccess"><i class="glyphicon glyphicon-ok"></i></span>' +
'<span ng-show="item.isCancel"><i class="glyphicon glyphicon-ban-circle"></i></span>' +
'<span ng-show="item.isError"><i class="glyphicon glyphicon-remove"></i></span>' +
'</td>' +
'<td nowrap>' +
'<button type="button" class="btn btn-success btn-xs" ng-click="item.upload()" ng-disabled="item.isReady || item.isUploading || item.isSuccess">' +
'<span class="glyphicon glyphicon-upload"></span> Upload' +
'</button>' +
'<button type="button" class="btn btn-warning btn-xs" ng-click="item.cancel()" ng-disabled="!item.isUploading">' +
'<span class="glyphicon glyphicon-ban-circle"></span> Cancel' +
'</button>' +
'<button type="button" class="btn btn-danger btn-xs" ng-click="item.remove()">' +
'<span class="glyphicon glyphicon-trash"></span> Remove' +
'</button>' +
'</td>' +
'</tr>' +
'</tbody>'
}
else {
return '<div class="modal-container" data-toggle="modal" data-target="#modal-h">'
}
},
link : function($scope, element, attrs) {
// $scope.canvasImgUpload = element.getElementById('canvasImgUpload');
// $scope.canvasImgUpload = element.find('canvas')[0];
// $scope.contextImgUpload = $scope.canvasImgUpload.getContext('2d');
$scope.changeCanvas=function(){
$scope.canvasImgUpload = angular.element(document.querySelector('#canvasImgUpload'));
console.log("canvass" , $scope.canvasImgUpload);
}
$scope.$watch('uploader.queue' , function () {
alert('queue changeeee');
})
}
我想访问模板中的画布,但它返回空对象!谁能告诉我为什么?
【问题讨论】:
-
你能展示你的指令是如何在 html 中应用的吗?
-
@BartekFryzowicz我在范围内有更多参数,但我将它们从上面的代码中删除以更清晰
@faraa。清楚你的要求。如果您想在添加到浏览器之前访问
template,您可以在compile 函数中进行。 link 函数中的 element 表示调用指令的宿主元素
@GangadharJannu 我想动态访问画布..我有一个表,里面有一些行...当用户上传文件时,这些行添加到表中(对于 eac 行,我有一个canvas)...我编辑了我的代码以显示更完整的模板...你能告诉我我的错误吗?
@faraa 我敢肯定你仍然不清楚该怎么做。以动作顺序说明您想做什么,以便我们帮助您解决问题
标签: javascript jquery angularjs angularjs-directive