クリップボードにコピー
AngularJSでクリップボードにコピーする方法についてです。
今回はこちらのプラグイン(GitHub - omichelsen/angular-clipboard: Copy to clipboard with AngularJS directive, without using Flash.)を利用します。
インストール方法についてはリンク先に掲載されているのでそちらを参照してください。
CDNとして利用する場合はこちらから。
コピーの方法としては、コピー対象の文字列を直接HTMLのタグに指定する方法(Directive)と、JavaScript側で文字列を指定する方法(Service)の2パターンが用意されているようです。
コード
HTML
<div ng-controller="SampleCtrl">
<!-- 方法1 -->
<button clipboard supported="supported" text="copyText1" on-copied="successCopy()" on-error="failCopy()">コピーテスト1</button>
<!-- 方法2 -->
<button ng-click="clickCopyTest2('コピーテスト2')">コピーテスト2</button>
</div>
JavaScript
var myApp = angular.module('ParticleArtApp', ['angular-clipboard']);
myApp.controller('SampleCtrl', function ($scope, clipboard) {
// 方法1
$scope.supported = false;
$scope.copyText1 = 'コピーテスト1';
$scope.successCopy = function () {
alert("コピーテスト1成功");
};
$scope.failCopy = function () {
alert("コピーテスト1失敗");
};
// 方法2
if (!clipboard.supported) {
console.log('Sorry, copy to clipboard is not supported');
}
$scope.clickCopyTest2 = function (str) {
clipboard.copyText(str);
alert("コピーテスト2成功");
};
});
方法1のsupportedの値がどう影響するのか分かりませんでしたが、とりあえず動作はします。