2014-06-16 155 views
0

創建模板幫助程序以返回要顯示在DOM中的變量,並且我的函數返回未定義的值,因此不影響DOM。不完全確定爲什麼,儘管我覺得它好像是一個有約束力的問題。下面的代碼:返回未定義的模板幫助函數的Javascript函數

supportNumber: function(){ 
      var jobSupportNumber = state.user.jobs.each(function(job){ 
       console.log(jobOrder.get("jobId")); 
       console.log("test"); 
       console.log(job.get("id")); 
       if(jobOrder.get("jobId") == job.get("id")){ 
        var jobNumber = job.get("supportNumber"); 
        console.log(jobNumber); 
        return jobNumber; 
       } 
       else{ 
        console.log("this fired"); 
       } 
      }); 
      console.log(jobSupportNumber); 
      return jobSupportNumber; 
} 

我控制檯記錄了很多,使正在返回肯定值,以及一些正在返回一路攀升,直到最後return語句,返回jobSupportNumber爲未定義。我做錯了什麼,它總是返回未定義?

+0

你'state.user.jobs.each()'顯然不返回任何東西你有什麼期望'jobSupportNumber'是? –

+0

它應該返回jobNumber,我知道它有一個值,因爲控制檯日誌在返回之前給了我我想要的。 – user3745938

+0

函數中有一個額外的「返回」,是否導致它? –

回答

1

.each()不會返回它打包的任何函數的值。內部函數結果僅用於控制.each()循環。

試試這個:

supportNumber: function(){ 
    var jobSupportNumber = null; 

    state.user.jobs.each(function(job){ 
    if(jobOrder.get("jobId") == job.get("id")){ 
    jobSupportNumber = job.get("supportNumber"); 
    return false; // tell .each() to quit looping 
    } 
    }); 

    return jobSupportNumber; 
} 
0

到你那裏的代碼,state.user.jobs.each()將返回jobNumber。該返回適用於您的匿名功能。 (你有function(job)

要獲得該值,你想要更多的東西是這樣的:。

supportNumber: function(){ 
    var jobSupportNumber; 
    state.user.jobs.each(function(job){ 
    console.log(jobOrder.get("jobId")); 
    console.log("test"); 
    console.log(job.get("id")); 
    if(jobOrder.get("jobId") == job.get("id")){ 
     var jobNumber = job.get("supportNumber"); 
     console.log(jobNumber); 
     /* Set the value and just plain return, instead */ 
     jobSupportNumber = jobNumber; 
     return; 
    } 
    else{ 
     console.log("this fired"); 
    } 
}); 
console.log(jobSupportNumber); 
return jobSupportNumber; 
}