@@ -202,7 +202,7 @@ function $InterpolateProvider() {
202
202
}
203
203
exp = text . substring ( startIndex + startSymbolLength , endIndex ) ;
204
204
expressions . push ( exp ) ;
205
- parseFns . push ( $parse ( exp , parseStringifyInterceptor ) ) ;
205
+ parseFns . push ( $parse ( exp ) ) ;
206
206
index = endIndex + endSymbolLength ;
207
207
expressionPositions . push ( concat . length ) ;
208
208
concat . push ( '' ) ;
@@ -232,7 +232,7 @@ function $InterpolateProvider() {
232
232
var compute = function ( values ) {
233
233
for ( var i = 0 , ii = expressions . length ; i < ii ; i ++ ) {
234
234
if ( allOrNothing && isUndefined ( values [ i ] ) ) return ;
235
- concat [ expressionPositions [ i ] ] = values [ i ] ;
235
+ concat [ expressionPositions [ i ] ] = parseStringifyValue ( values [ i ] ) ;
236
236
}
237
237
return concat . join ( '' ) ;
238
238
} ;
@@ -282,10 +282,10 @@ function $InterpolateProvider() {
282
282
exp : text , //just for compatibility with regular watchers created via $watch
283
283
expressions : expressions ,
284
284
$$watchDelegate : function ( scope , listener , objectEquality ) {
285
- var lastValue ;
285
+ var lastValue = NaN ;
286
286
return scope . $watchGroup ( parseFns , function interpolateFnWatcher ( values , oldValues ) {
287
287
var currValue = compute ( values ) ;
288
- if ( isFunction ( listener ) ) {
288
+ if ( isFunction ( listener ) && currValue !== lastValue ) {
289
289
listener . call ( this , currValue , values !== oldValues ? lastValue : currValue , scope ) ;
290
290
}
291
291
lastValue = currValue ;
@@ -299,7 +299,7 @@ function $InterpolateProvider() {
299
299
replace ( escapedEndRegexp , endSymbol ) ;
300
300
}
301
301
302
- function parseStringifyInterceptor ( value ) {
302
+ function parseStringifyValue ( value ) {
303
303
try {
304
304
return stringify ( getValue ( value ) ) ;
305
305
} catch ( err ) {
0 commit comments