簡體   English   中英

Javascript函數返回未定義的模板助手

[英]Javascript function returning undefined for template helper

創建一個模板助手來返回要在DOM中顯示的變量,而我的函數返回的是未定義的,因此不影響DOM。 盡管我覺得這似乎是一個具有約束力的問題,但不確定原因。 這是代碼:

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返回為undefined。 讓它總是返回未定義狀態我在做什么錯?

.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;
}

根據您那里的代碼, 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM