aboutsummaryrefslogtreecommitdiffstats
path: root/src/service/compiler.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/service/compiler.js')
-rw-r--r--src/service/compiler.js12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/service/compiler.js b/src/service/compiler.js
index 3464a1a0..8a0dca7d 100644
--- a/src/service/compiler.js
+++ b/src/service/compiler.js
@@ -244,6 +244,7 @@ function $CompileProvider(){
elementName = nodeName_(element),
elementNamespace = elementName.indexOf(':') > 0 ? lowercase(elementName).replace(':', '-') : '',
template,
+ locals = {$element: element},
selfApi = {
compile: bind(self, self.compile),
descend: function(value){ if(isDefined(value)) descend = value; return descend;},
@@ -256,7 +257,10 @@ function $CompileProvider(){
if (!widget) {
if ((widget = self.widgets('@' + name))) {
element.addClass('ng-attr-widget');
- widget = bind(selfApi, widget, value, element);
+ if (isFunction(widget) && !widget.$inject) {
+ widget.$inject = ['$value', '$element'];
+ }
+ locals.$value = value;
}
}
});
@@ -264,14 +268,16 @@ function $CompileProvider(){
if ((widget = self.widgets(elementName))) {
if (elementNamespace)
element.addClass('ng-widget');
- widget = bind(selfApi, widget, element);
+ if (isFunction(widget) && !widget.$inject) {
+ widget.$inject = ['$element'];
+ }
}
}
if (widget) {
descend = false;
directives = false;
var parent = element.parent();
- template.addLinkFn(widget.call(selfApi, element));
+ template.addLinkFn($injector.invoke(selfApi, widget, locals));
if (parent && parent[0]) {
element = jqLite(parent[0].childNodes[elementIndex]);
}