2013-06-17 3 views
0

У меня есть эта функция:Функция не возвращает правильно

Tickets.prototype.each = function(func) { 
    _.each(this.getTickets(), func); 
}; 

Tickets.prototype.findWhere = function(key, val) { 
    this.each(function(ticket) { 
     if(ticket.get(key) === val) { 
      console.log(ticket); 
      return ticket; 
     } 
    }); 
}; 

Тогда я звоню findWhere здесь:

console.log(this.collection.findWhere('ID', $ticketRow.data('id'))); 

Когда я запускаю его, console.log в стороне .findWhere печатает правильно объект билета. Но console.log, где я вызываю его, печатает «undefined».

Что может быть причиной этого?

+0

Вы ничего не возвращаете во внешнюю функцию ... – elclanrs

ответ

2

Вы, возможно, придется

Tickets.prototype.findWhere = function(key, val) { 
    var tick; 
    this.each(function(ticket) { 
     if(ticket.get(key) === val) { 
      console.log(ticket); 
      tick = ticket; 
     } 
    }); 
    return tick; 
}; 
+0

ahhhh ok thanks .., который отлично работал –

1
Tickets.prototype.each = function(func) { 
    $.each(this.getTickets(), func); 
}; 

Tickets.prototype.findWhere = function(key, val) { 
    var tick; 
     this.each(function(ticket) { 
      if(ticket.get(key) === val) { 
       console.log(ticket); 
       tick = ticket; 
       return false; //break out of .each 
      } 
     }); 
    return tick; 
}; 

Вы не можете вырваться из _.each, вы можете только разрыв $.each (если вы используете JQuery).