-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcomponent.js
22 lines (21 loc) · 825 Bytes
/
component.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
angular.module('component', [])
.directive('component', ['$compile', '$parse', function ($compile, $parse) {
return {
controller: function ($scope, $element) {
var name = $parse($element.attr("name"))($scope);
var args = $parse($element.attr("args"))($scope);
var replace = $parse($element.attr("replace"))($scope);
var argsStr = " ";
angular.forEach(args, function (value, key, obj) {
argsStr += key + '="' + value + '" ';
});
var elem = "<" + name + argsStr + "></" + name + ">";
var component = $compile(elem)($scope)[0];
if (replace) {
$element.replaceWith(component);
} else {
$element.append(component);
}
}
}
}])