(function () {
'use strict';
angular
.module('core.directive', [])
.directive('ngReallyClick', ngReallyClick)
.directive('ngFocus', ngFocus)
.directive('fileModel', fileModel)
.directive('dropDown', dropDown)
.directive('dropDownByObject', dropDownByObject)
.directive('dropDownByObjectSecond', dropDownByObjectSecond)
;
function ngReallyClick() {
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.bind('click', function () {
var message = attrs.ngReallyMessage;
if (message && confirm(message)) {
scope.$apply(attrs.ngReallyClick);
}
});
}
}
}
//焦点聚焦
function ngFocus($timeout, $parse) {
return {
restrict: 'A',
//scope: true, // optionally create a child scope
link: function (scope, element, attrs) {
var model = $parse(attrs.ngFocus);
scope.$watch(model, function (value) {
if (value === true) {
$timeout(function () {
element[0].focus();
});
}
});
// to address @blesh's comment, set attribute value to 'false'
// on blur event:
element.bind('blur', function () {
scope.$apply(model.assign(scope, false));
});
}
};
}
function fileModel($parse) {
return {
restrict: 'A',
link: function (scope, element, attrs, ngModel) {
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function (event) {
scope.$apply(function () {
modelSetter(scope, element[0].files[0]);
});
//附件预览
scope.file = (event.srcElement || event.target).files[0];
scope.getFile();
});
}
};
}
function dropDownByObject() {
return {
restrict: 'EA',
replace: true,
transclude: true,
scope: {
selecttitle: '=', //// 默认选中值
selectdata: '=',
ddlsize: '=',
lidata: '=lidata', //// 数据集如
clickChange: '&', //// 选项变化时事件
disabled: '@' //// 是否显示,支持表达式
},
//template: '
'
template: '
',
link: function ($scope, $element, $attrs, $document) {
$scope.showMe = false;
$scope.disabled = true;
//列表是否打开的判断标志
//$scope.flag = { showList: false }; //在document上监听click函数
//$document.bind('click', function (event) {
// console.info("下拉框点击啦啦啦");
// console.info(event);
// //_closeList();//关闭下拉列表
// //$scope.$apply();//为了保证angular的数据同步
//});
/**
* 关闭列表函数
*/
//function _closeList() { $scope.flag.showList = false; }
$scope.toggle = function toggle(event) {
//$scope.showMe = !$scope.showMe;
event.stopImmediatePropagation();
if ($scope.showMe) { _closeList(); } else { $scope.showMe = true; }
};
$scope.clickLi = function clickLi(data_) {
$scope.selectdata = data_.value;
$scope.selecttitle = data_.name;
$scope.showMe = !$scope.showMe;
};
function _closeList() {
$scope.showMe = false;
}
$scope.closeList = function (event) {
event.stopPropagation();
_closeList();
}
$scope.$watch('selectdata', function (value) {
$scope.clickChange();
});
}
}
}
function dropDownByObjectSecond() {
return {
restrict: 'EA',
replace: true,
transclude: true,
scope: {
selecttitle: '=', //// 默认选中值
selectdata: '=',
ddlsize: '=',
lidata: '=lidata', //// 数据集如
clickChange: '&', //// 选项变化时事件
disabled: '@' //// 是否显示,支持表达式
},
template: '
',
link: function ($scope, $element, $attrs, $document) {
$scope.showMe = false;
$scope.disabled = true;
$scope.showChildren = false;
$scope.clidata = [];
//列表是否打开的判断标志
//$scope.flag = { showList: false }; //在document上监听click函数
//$document.bind('click', function (event) {
// console.info("下拉框点击啦啦啦");
// console.info(event);
// //_closeList();//关闭下拉列表
// //$scope.$apply();//为了保证angular的数据同步
//});
/**
* 关闭列表函数
*/
//function _closeList() { $scope.flag.showList = false; }
$scope.toggle = function toggle(event) {
//$scope.showMe = !$scope.showMe;
event.stopImmediatePropagation();
if ($scope.showMe) { _closeList(); } else { $scope.showMe = true; }
};
$scope.clickLi = function clickLi(data_) {
$scope.selectdata = data_.value;
$scope.selecttitle = data_.name;
$scope.showMe = !$scope.showMe;
};
$scope.moveOn = function moveOn(data_) {
$scope.showChildren = true;
$scope.clidata = data_;
};
$scope.leave = function leave(data_) {
$scope.showChildren = false;
};
function _closeList() {
$scope.showMe = false;
}
$scope.closeList = function (event) {
event.stopPropagation();
_closeList();
}
$scope.$watch('selectdata', function (value) {
$scope.clickChange();
});
}
}
}
function dropDown() {
return {
restrict: 'EA',
replace: true,
transclude: true,
scope: {
pagesize: '=', //// 默认选中值
lidata: '=lidata', //// 数据集如['张三','李四','王五']
changePageSize: '&', //// 选项变化时事件
disabled: '@' //// 是否显示,支持表达式
},
template: '
',
link: function ($scope, $element, $attrs) {
$scope.showMe = false;
$scope.disabled = true;
$scope.toggle = function toggle() {
$scope.showMe = !$scope.showMe;
};
$scope.clickLi = function clickLi(data_) {
$scope.pagesize = data_;
$scope.showMe = !$scope.showMe;
};
$scope.$watch('pagesize', function (value) {
$scope.changePageSize();
});
}
}
}
//function dropDown() {
// return {
// restrict: 'EA',
// replace: true,
// transclude: true,
// scope: {
// selecttitle: '=', //// 默认选中值
// lidata: '=lidata', //// 数据集如['张三','李四','王五']
// clickChange: '&', //// 选项变化时事件
// disabled: '@' //// 是否显示,支持表达式
// },
// template:'
',
// link: function ($scope, $element, $attrs) {
// $scope.showMe = false;
// $scope.disabled = true;
// $scope.toggle = function toggle() {
// $scope.showMe = !$scope.showMe;
// };
// $scope.clickLi = function clickLi(data_) {
// $scope.selecttitle=data_;
// $scope.showMe = !$scope.showMe;
// };
// $scope.$watch('selecttitle', function(value) {
// $scope.clickChange();
// });
// }
// }
//}
})();