landers.angular
Version:
landers.angular
45 lines (42 loc) • 1.76 kB
JavaScript
;angular.module('Landers.angular')
.directive('landersUpload', ['Flat', '$compile', 'Helpers', '$timeout', function(Flat, $compile, Helpers, $timeout) {
return {
restrict : 'A',
scope: {
'ngModel': '=',
'onUpload': '@',
'onRemove': '@'
},
template: '<textarea class="wp100 h100 mb10" style="display:none"></textarea>',
link : function($scope, $ele, $attrs) {
var $textarea = $ele.find('textarea');
var key = $attrs['uploadKey'];
var options = Helpers.attrItemToJson($attrs, 'uploadOptions');
// 给options附上事件
angular.extend(options, {
onChange: function(data){
if (angular.isString(data)) {
data = angular.fromJson(data);
}
data = data || '';
$timeout(function(){
$scope.ngModel = data;
});
},
onUpload: $scope.onUpload,
onRemove: $scope.onRemove
});
var upload = new Landers.upload($ele, $textarea, key, options);
var destroyWatch = $scope.$watch('ngModel', function(new_value){
if (new_value === undefined) return;
if (new_value) {
upload.setInput(new_value);
} else {
upload.clearValue();
}
upload.show();
destroyWatch();
});
}
};
}]);