<apex:component >
|
<script>
|
;
|
'use strict';
|
angular.module("alDirective", [])
|
// INPUT タグ 用 ディレクティブ 単一ファイル選択 or カメラ
|
.directive("fileModel", ["$parse", function ($parse) {
|
return {
|
restrict: "A",
|
link: function (scope, element, attrs) {
|
var model = $parse(attrs.fileModel);
|
element.bind("change", function () {
|
scope.$apply(function () {
|
console.log("input file ");
|
model.assign(scope, element[0].files[0]);
|
});
|
});
|
}
|
};
|
}])
|
// NPUT タグ 用 ディレクティブ 複数ファイル選択
|
.directive("multifileModel", ["$parse", function ($parse) {
|
return {
|
restrict: "A",
|
link: function (scope, element, attrs) {
|
var model = $parse(attrs.multifileModel);
|
element.bind("change", function () {
|
scope.$apply(function () {
|
console.log("input file ");
|
model.assign(scope, element[0].files);
|
});
|
});
|
}
|
};
|
}])
|
// ロングタップを拾う用
|
// https://gist.github.com/BobNisco/9885852
|
.directive('onLongPress', ['$timeout', '$parse', function($timeout, $parse) {
|
return {
|
restrict: 'A',
|
link: function ($scope, $elm, $attrs) {
|
// スマホ用 ロングタップ判定
|
$elm.bind('touchstart', function (evt) {
|
// Locally scoped variable that will keep track of the long press
|
$scope.longPress = true;
|
var functionHandler = $parse($attrs.onLongPress);
|
// We'll set a timeout for 600 ms for a long press
|
$timeout(function () {
|
if ($scope.longPress) {
|
// If the touchend event hasn't fired,
|
// apply the function given in on the element's on-long-press attribute
|
$scope.$apply(function () {
|
functionHandler($scope, {$event: evt});
|
});
|
}
|
}, 600);
|
});
|
// スマホ用 タッチ終了
|
$elm.bind('touchend', function (evt) {
|
// Prevent the onLongPress event from firing
|
$scope.longPress = false;
|
var functionHandler = $parse($attrs.onTouchEnd);
|
// If there is an on-touch-end function attached to this element, apply it
|
if ($attrs.onTouchEnd) {
|
$scope.$apply(function () {
|
functionHandler($scope, {$event: evt});
|
});
|
}
|
});
|
// PC用 ロングタップ判定
|
$elm.bind('mousedown', function (evt) {
|
// Locally scoped variable that will keep track of the long press
|
$scope.longPress = true;
|
var functionHandler = $parse($attrs.onLongPress);
|
// We'll set a timeout for 600 ms for a long press
|
$timeout(function () {
|
if ($scope.longPress) {
|
// If the touchend event hasn't fired,
|
// apply the function given in on the element's on-long-press attribute
|
$scope.$apply(function () {
|
functionHandler($scope, {$event: evt});
|
});
|
}
|
}, 600);
|
});
|
// PC用 タッチ終了
|
$elm.bind('mouseup', function (evt) {
|
// Prevent the onLongPress event from firing
|
$scope.longPress = false;
|
var functionHandler = $parse($attrs.onTouchEnd);
|
// If there is an on-touch-end function attached to this element, apply it
|
if ($attrs.onTouchEnd) {
|
$scope.$apply(function () {
|
functionHandler($scope, {$event: evt});
|
});
|
}
|
});
|
}
|
};
|
}])
|
;
|
|
</script>
|
</apex:component>
|