Как передать переменные в callback ?
Как передать аргументы которые пришли в функцию в ее callback...а именно в copyCallback ?
это рабочий код
$scope.onCopy = function (ev, id) {
_backend.getCard($scope, backendUri + '/' + id, 'formData', {id: id}, function () {
console.log(id);
});
};
но анонимную функцию я хочу заменить на вызов callback, а там уже нет доступа к id
так не работает:
$scope.onCopy = function (ev, id) {
_backend.getCard($scope, backendUri + '/' + id, 'formData', {id: id}, copyCallback);
};
var copyCallback = function () {
console.log(id);
}
пытался как то пробросить id через bind и proxy, но моих знаний в js не хватает чтобы это корректно реализовать:
тоже не работает:
$scope.onCopy = function (ev, id) {
_backend.getCard($scope, backendUri + '/' + id, 'formData', {id: id}, copyCallback.bind(id));
};
или так
$scope.onCopy = function (ev, id) {
_backend.getCard($scope, backendUri + '/' + id, 'formData', {id: id}, $.proxy(copyCallback, id);
};
var copyCallback = function () {
console.log(id);
}
как правильно в колбек передать id ?
|
Цитата:
copyCallback.bind(null, id)
...
var copyCallback = function (id) {
console.log(id);
}
|
все равно что то не хватает....
эм а если передать null в качестве аргумента для this в функции bind я контекст (this) функции copyCallback не перезатру ?
и второй вопрос для полноты картины если не сложно, зачем может понадобится передавать this ? может лучше передать this и как то через него достучаться до id, а id из передоваемых аргументов убрать ? тк мне надо передать еще несколько аргументов и я думаю как это сделать более универсально.... |
Цитата:
function f() { alert(this.x); }
f.bind({x:1}).bind({x:2})(); // второй bind игнорируется
Цитата:
copyCallback.bind({id: id})
...
var copyCallback = function () {
console.log(this.id);
}
но, повторюсь, это при условии, что copyCallback - не результат bind'а с каким-то другим this |
Цитата:
$scope.onCopy = function (ev, id) { var self = this; _backend.getCard($scope, backendUri + '/' + id, 'formData', {id: id}, copyCallback.bind(self, id)); }; |
| Часовой пояс GMT +3, время: 22:43. |