コードのどこかで宣言していない限りnewSuggested
、それはウィンドウ上のグローバル変数です (これは問題ではなく、指摘しているだけです)。
ログに記録している場所が定義されていない理由は、そのconsole.log
ステートメントが実行されたときにフェッチが完了していないためです。
で何をするにしても、コールバック関数newSuggested
内から実行する必要があります。complete
// declare the variable using var, so it is not global
var newSuggested;
cars.fetch().complete(function(){
newSuggested = cars.models.filter(function (model) {
return _.contains(model.attributes.suggestedTo, storedVin)
});
console.log(newSuggested); // works!
// do something with newSuggested here, hard to tell what you are trying to do.
probablyUpdateViewInSomeWay(newSuggested);
});
// fetch not complete here!
// this is not a scope problem, but an async problem.
// complete callback has not been called yet.
console.log(newSuggested) //undefined, this is expected
補足:complete
は jQuery 1.8 で廃止されたため、代わりに使用する必要がありますdone
。