如何在angular.js之前加载jquery时使用ngPaste指令获取粘贴值?

时间:2014-05-18 22:19:48

标签: jquery angularjs

当我尝试使用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
}

2 个答案:

答案 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());
        });
    }
};