当我尝试使用ng-paste指令获取粘贴的数据时,我遇到了问题。
<input ng-model="evidence.url" ng-paste="getEvidenceInfos(evidence, $event.clipboardData.getData('text/plain'))">
当jquery在角度后加载时,它可以正常工作 在角度之前加载jquery时怎么做?
<input ng-model="evidence.url" ng-paste="getEvidenceInfos(evidence, $event)">
$scope.getEvidenceInfos = function(evidence, event) {
$(event.currentTarget).val() // doesn't work
$(event.target).val() // doesn't work
}
答案 0 :(得分:9)
当jQuery在angular之前加载时,它在angular中使用而不是jQuery lite,它是内置于angular中的。如果使用完整的jQuery,您将收到一个jQuery事件。原始事件可以在属性originalEvent中找到。
$scope.getEvidenceInfos = function(evidence, event) {
var pastedData = event.originalEvent.clipboardData;
}
答案 1 :(得分:1)
想要分享我的解决方案,以支持没有剪贴板API的浏览器。这应该适用于角度支持的任何浏览器。
HTML:
<input type="text" ng-paste="copyPasted($event)">
JS:
$scope.copyPasted = function ($event){
if(typeof $event.originalEvent.clipboardData !== "undefined"){
$scope.handlePastedData($event.originalEvent.clipboardData.getData('text/plain'));
} else { // To support browsers without clipboard API (IE and older browsers)
$timeout(function(){
$scope.handlePastedData(angular.element($event.currentTarget).val());
});
}
};