landers.angular
Version:
landers.angular
35 lines (33 loc) • 1.36 kB
JavaScript
;angular.module('Landers.angular')
.directive('keyToText', ['$timeout', 'Flat', function($timeout, Flat) {
return {
restrict : 'E',
scope: {
ngModel: '=',
enums: '='
},
link : function($scope, $ele, $attrs) {
var default_value = $attrs['defaultValue'] || ('defaultValue' in $attrs);
var field = $attrs['key'] || 'text';
$scope.$watch('ngModel', function(new_value){
if (new_value === undefined || new_value === null) return;
var enums = $scope.enums;
if (!enums) {
return;
}
var data = enums[new_value];
if (!data && default_value) {
data = {};
data[field] = default_value === true ? new_value : default_value;
data._class = $attrs['defaultClass'];
}
if (!data) return '';
$ele.html(data[field]);
if (data._class) {
for (var k in enums) $ele.removeClass(enums[k]['_class']);
$ele.addClass(data._class);
}
});
}
};
}]);