我想知道AngularJS中是否有以下内容的简写:
$scope.parseSomeString = function (str) {
console.log(str);
// ...
};
someService.fnA($scope.arg1) // fnA doesn't return anything
.then(function () {
return someService.fnB($scope.arg2, $scope.arg3()) // fnB returns some, e.g. string
})
.then($scope.parseSomeString); // this shorthand is great!
我想做的是这样的事情:
someService.fnA($scope.arg1)
.then(someService.fnB($scope.arg2, $scope.arg3())) // but of course, this just calls the function; not good
.then($scope.parseSomeString); // this shorthand is great!
有没有办法将参数$scope.arg2
和$scope.arg3()
绑定到fnB
?
您可以使用function.bind(查看旧浏览器的支持和填充程序)传入带有参数的绑定函数引用,以便在调用函数时将参数绑定到该函数。
someService.fnB.bind(this, $scope.arg2, $scope.arg3);
如果不需要设置特定上下文(看起来没有),也可以将null
作为第一个参数传递,如果需要,可以将该上下文作为第一个自变量传递。
尝试:-
someService.fnA($scope.arg1)
.then(someService.fnB.bind(this, $scope.arg2, $scope.arg3)) // but of course, this just calls the function; not good
.then($scope.parseSomeString); // this shorthand is great!
你也可以使用angular.bind
someService.fnA($scope.arg1)
.then(angular.bind(this, someService.fnB, $scope.arg2, $scope.arg3))...
类似地,你会在你可能已经使用的库中找到类似的方法,比如Lodash/underlinehasbind,jquery has$.proxy等。