Actually, all both ng-bind and ng-bind-template make $binding a function. However, they also add an 'exp' property to that function, which is what is grabbed below.

ng-bind-template adds the expression name directly to $binding.exp, instead of $binding[0].exp. You should check if $binding is an array or not instead.