2013-09-27 7 views
0

Как я могу получить доступ к переменной searchStr в анонимной функции в функции filter? Ниже searchStr распечатывает 0 - п, я предполагаю, что итератор для цикла по коллекции, я пытающийся фильтроватьДоступ к переменной внутри функции фильтра

IEG.vent.on("searchGroups", function (searchStr) { 
    if (searchStr) { 
     IEG.Router.navigate("search/" + searchStr); 
    } 
    else { 
     IEG.Router.navigate(); 
    } 

    var filteredArray = IEG.searchColl.models.filter(function (model,searchStr) {     
     console.log(model.get("key") + searchStr) 
    }); 
}); 
+0

кажется, чем ты» повторное выполнение должно работать ... – tymeJV

ответ

4

Удалить searchStr из аргументов для filter функции:

var filteredArray = IEG.searchColl.models.filter(function (model) { 
    console.log(model.get("key") + searchStr); 
}); 
+2

Это правильный ответ: причина в том, что, добавляя 'searchStr' к аргументам, вы создаете локальную переменную в анонимной функции, которая должна быть заполнена обратным вызовом' filter'. Но поскольку функция 'filter' не передает' searchStr' в обратный вызов, вы получаете неопределенную переменную. Вышеупомянутый код работает, потому что вы создаете закрытие, поэтому анонимная функция имеет доступ ко всем переменным в цепочке областей видимости. – Steve

Смежные вопросы