@@ -244,6 +244,7 @@ function $CompileProvider(){
244
244
elementName = nodeName_ ( element ) ,
245
245
elementNamespace = elementName . indexOf ( ':' ) > 0 ? lowercase ( elementName ) . replace ( ':' , '-' ) : '' ,
246
246
template ,
247
+ locals = { $element : element } ,
247
248
selfApi = {
248
249
compile : bind ( self , self . compile ) ,
249
250
descend : function ( value ) { if ( isDefined ( value ) ) descend = value ; return descend ; } ,
@@ -256,22 +257,27 @@ function $CompileProvider(){
256
257
if ( ! widget ) {
257
258
if ( ( widget = self . widgets ( '@' + name ) ) ) {
258
259
element . addClass ( 'ng-attr-widget' ) ;
259
- widget = bind ( selfApi , widget , value , element ) ;
260
+ if ( isFunction ( widget ) && ! widget . $inject ) {
261
+ widget . $inject = [ '$value' , '$element' ] ;
262
+ }
263
+ locals . $value = value ;
260
264
}
261
265
}
262
266
} ) ;
263
267
if ( ! widget ) {
264
268
if ( ( widget = self . widgets ( elementName ) ) ) {
265
269
if ( elementNamespace )
266
270
element . addClass ( 'ng-widget' ) ;
267
- widget = bind ( selfApi , widget , element ) ;
271
+ if ( isFunction ( widget ) && ! widget . $inject ) {
272
+ widget . $inject = [ '$element' ] ;
273
+ }
268
274
}
269
275
}
270
276
if ( widget ) {
271
277
descend = false ;
272
278
directives = false ;
273
279
var parent = element . parent ( ) ;
274
- template . addLinkFn ( widget . call ( selfApi , element ) ) ;
280
+ template . addLinkFn ( $injector . invoke ( selfApi , widget , locals ) ) ;
275
281
if ( parent && parent [ 0 ] ) {
276
282
element = jqLite ( parent [ 0 ] . childNodes [ elementIndex ] ) ;
277
283
}
0 commit comments