Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回模板帮助器的未定义Javascript函数_Javascript_Jquery - Fatal编程技术网

返回模板帮助器的未定义Javascript函数

返回模板帮助器的未定义Javascript函数,javascript,jquery,Javascript,Jquery,创建一个模板帮助器以返回要在DOM中显示的变量,而my函数返回的是未定义的,因此不会影响DOM。不太清楚为什么,尽管我觉得这是一个有约束力的问题。代码如下: supportNumber: function(){ var jobSupportNumber = state.user.jobs.each(function(job){ console.log(jobOrder.get("jobId")); conso

创建一个模板帮助器以返回要在DOM中显示的变量,而my函数返回的是未定义的,因此不会影响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返回为未定义。让它始终以未定义的形式返回,我做错了什么

.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
。该返回适用于匿名函数。(您有
功能(作业)

要获得该值,您需要以下内容:

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

你的
state.user.jobs.each()
显然没有返回任何内容。你希望
jobSupportNumber
是什么?它应该返回jobNumber,我知道它有一个值,因为在返回之前控制台日志中给出了我想要的内容。你在函数中有一个额外的“return”,这是导致它的原因吗?supportNumber:function(){var jobSupportNumber;state.user.jobs.forEach(函数(作业){if(jobOrder.get(“jobId”)==job.get(“id”){jobSupportNumber=job.get(“supportNumber”);}};返回jobSupportNumber;};无法从“each”循环中返回值。只需将其分配给变量,然后返回该变量。请参阅我的其他注释。