salix/front/core/directives/id.js

27 lines
768 B
JavaScript

import ngModule from '../module';
import {kebabToCamel} from '../lib/string';
/**
* Registers the element controller into the scope as a property whose name is
* the directive value transformed to lowerCamelCase.
*
* @return {Object} The directive
*/
export function directive() {
return {
restrict: 'A',
link: function($scope, $element, $attrs) {
let id = kebabToCamel($attrs.vnId);
let $ctrl = $element[0].$ctrl
? $element[0].$ctrl
: $element.controller($element[0].tagName.toLowerCase());
if (!id)
throw new Error(`vnId: Attribute can't be null`);
$scope[id] = $ctrl || $element[0];
}
};
}
ngModule.directive('vnId', directive);