Как передать переменные в 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, время: 15:03. |