我想设置函数的上下文并将其作为回调传递。为此,我正在这样做。
myController.myService.validateToken(param)
.then( myController.myService.getToken.bind( myController.myService ) );
myController.myService.getToken.bind(myController.myService)
但我不确定它是否是正确的做法?
Angular是否提供与bind()
类似的功能?
答案 0 :(得分:2)
请参阅AngularJS 1.4.1(第1146行)中定义的angular.bind:
function bind(self, fn) {
var curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];
if (isFunction(fn) && !(fn instanceof RegExp)) {
return curryArgs.length
? function() {
return arguments.length
? fn.apply(self, concat(curryArgs, arguments, 0))
: fn.apply(self, curryArgs);
}
: function() {
return arguments.length
? fn.apply(self, arguments)
: fn.call(self);
};
} else {
// in IE, native methods are not functions so they cannot be bound (note: they don't need to be)
return fn;
}
}
所以用法应该是:
var context, fn, args;
angular.bind(context, fn, args);