Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.02.2019, 18:11
Интересующийся
Отправить личное сообщение для asker Посмотреть профиль Найти все сообщения от asker
 
Регистрация: 03.09.2008
Сообщений: 13

Как передать переменные в 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 ?
Ответить с цитированием
  #2 (permalink)  
Старый 28.02.2019, 18:39
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от asker
copyCallback.bind(id)
чуть-чуть не хватило )
copyCallback.bind(null, id)

...

var copyCallback = function (id) {
      console.log(id);
}
Ответить с цитированием
  #3 (permalink)  
Старый 01.03.2019, 16:23
Интересующийся
Отправить личное сообщение для asker Посмотреть профиль Найти все сообщения от asker
 
Регистрация: 03.09.2008
Сообщений: 13

все равно что то не хватает....
эм а если передать null в качестве аргумента для this в функции bind я контекст (this) функции copyCallback не перезатру ?

и второй вопрос для полноты картины если не сложно, зачем может понадобится передавать this ? может лучше передать this и как то через него достучаться до id, а id из передоваемых аргументов убрать ? тк мне надо передать еще несколько аргументов и я думаю как это сделать более универсально....
Ответить с цитированием
  #4 (permalink)  
Старый 01.03.2019, 20:12
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от asker
эм а если передать null в качестве аргумента для this в функции bind я контекст (this) функции copyCallback не перезатру ?
если до этого ты забиндил туда какой-то объект как this, тот первый так и останется
function f() { alert(this.x); }
f.bind({x:1}).bind({x:2})(); // второй bind игнорируется


Сообщение от asker
и второй вопрос для полноты картины если не сложно, зачем может понадобится передавать this ? может лучше передать this и как то через него достучаться до id, а id из передоваемых аргументов убрать ? тк мне надо передать еще несколько аргументов и я думаю как это сделать более универсально....
да, можно в this поставить объект, куда всё сложить, и при необходимости потом что-то дописать туда ещё
copyCallback.bind({id: id})

...

var copyCallback = function () {
      console.log(this.id);
}


но, повторюсь, это при условии, что copyCallback - не результат bind'а с каким-то другим this

Последний раз редактировалось Alexandroppolus, 01.03.2019 в 20:16.
Ответить с цитированием
  #5 (permalink)  
Старый 03.03.2019, 10:33
Интересующийся
Отправить личное сообщение для Russo Посмотреть профиль Найти все сообщения от Russo
 
Регистрация: 26.02.2019
Сообщений: 10

Сообщение от asker Посмотреть сообщение
тоже не работает:

$scope.onCopy = function (ev, id) {
_backend.getCard($scope, backendUri + '/' + id, 'formData', {id: id}, copyCallback.bind(id));
};
[/JS]
А если вот, так.
$scope.onCopy = function (ev, id) {
var self = this;
_backend.getCard($scope, backendUri + '/' + id, 'formData', {id: id}, copyCallback.bind(self, id));
};
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать аяксом хтмл тэги с рус текстом и разными знаками wet jQuery 6 31.08.2016 11:47
Как передать значение в функцию в переменную с нужным именем? bratkovsky Общие вопросы Javascript 1 12.10.2015 08:18
Как c функцией .ajax() передать несколько значений в php? Faab jQuery 11 19.11.2013 12:03
Как передать выполнение функции в throw? platedz Events/DOM/Window 3 19.08.2012 20:28
Как получить значение переменной из callback функции? Хиросим AJAX и COMET 5 24.04.2012 09:32