2014-01-09 61 views
14

我實際上正在尋找使用角JS來模擬複製粘貼事物的剪貼板的內容。如何獲得角度的剪貼板數據JS

+0

強烈推薦[角zeroclipboard](https://github.com/lisposter/angular-zeroclipboard),則優於記錄'NG-clip' 。此外,我沒有做'ng-clip'工作。 – Fedor

+0

ng-clip依賴於ZeroClipboard(至少在某些操作模式下),並且使我更容易集成「複製到剪貼板」功能。我遵循[這幾個步驟](https://github.com/asafdav/ng-clip#usage)來讓它工作。 –

回答

2

順便說一句,如果採用了棱角分明覆制與Chrome封裝應用到剪貼板,請執行下列操作:

  1. 添加「clipboardRead」和「clipboardWrite」在manifest.json中的「權限」。在你看來
  2. 使用NG單擊值喂到控制器$範圍,如:數據-NG-點擊=「copyUrlToClipboard(file.webContentLink)」
  3. 將一個函數在你的控制器,如:

    $scope.copyUrlToClipboard = function(url) { 
        var copyFrom = document.createElement("textarea"); 
        copyFrom.textContent = url; 
        var body = document.getElementsByTagName('body')[0]; 
        body.appendChild(copyFrom); 
        copyFrom.select(); 
        document.execCommand('copy'); 
        body.removeChild(copyFrom); 
        this.flashMessage('over5'); 
    }
6

我創建複製到剪貼板它是使用document.execCommand()方法的指令。

這裏指令

(function() { 
app.directive('copyToClipboard', function ($window) { 
     var body = angular.element($window.document.body); 
     var textarea = angular.element('<textarea/>'); 
     textarea.css({ 
      position: 'fixed', 
      opacity: '0' 
     }); 

     function copy(toCopy) { 
      textarea.val(toCopy); 
      body.append(textarea); 
      textarea[0].select(); 

      try { 
       var successful = document.execCommand('copy'); 
       if (!successful) throw successful; 
      } catch (err) { 
       console.log("failed to copy", toCopy); 
      } 
      textarea.remove(); 
     } 

     return { 
      restrict: 'A', 
      link: function (scope, element, attrs) { 
       element.bind('click', function (e) { 
        copy(attrs.copyToClipboard); 
       }); 
      } 
     } 
    }) 
}).call(this);  

的Html

<button copy-to-clipboard="Copy Me!!!!" class="button">COPY</button> 
+0

如何複製「複製我!!!!」以外的內容 - 比如說,一個textarea的內容? – DaveC426913

+0

在控制器中,使用範圍變量 $ scope.copyMe =''; 並在textarea值中使用此var,如下所示。