2016-12-14 16 views
2

所以我有這個使用KendoUI渲染網格的模板。下面是它的一部分:帶有看似定義變量的未捕獲ReferenceError

<script id="rowTemplateCourse" type="text/x-kendo-tmpl"> 
    <tr data-cid="#: id #" class="course-row" id="course-row#: id #"> 
    <td> 
     <span class="circle-indicator label-#if(package_is_active == 1){#success#}else{#danger#}#"></span> 
    </td> 
    <td> 
     #: course_name # - #= name# 
    </td> 
    <td> 
     <span class="badge element-bg-color-blue">ver. #:version_number#</span> 
    </td> 
    </tr> 
</script> 

我從一個PHP控制器,在我的觀點,即認爲此模板加載變量所需要的信息。變量保存這類數據:

[1] => Array(
    [id] => 544 
    [course_name] => Course for whatever 
    [price] => 52 
    [logo] => assets/images/new_course.png 
    [version_number] => 1 
    [parent_version_id] => 0 
    [course_price] => 52.00 
    [description_for_school] => 
    [is_print_only] => 0 
    [offer_pdf] => 0 
    [pdf_final_price] => 0.00 
    [simple_course] => 0 
    [state_id] => 50 
    [name] => Tennessee 
    [cs_days_to_complete] => 120 
    [course_is_active] => 1 
    [user_in_course] => no 
    [user_is_waiting] => no 
    [days_to_complete] => 0) 

在我看來,我解析這個變量,像這樣:

var course_data = JSON.parse('<?php print(json_encode($courses));?>'); 

這正常工作,並返回像這樣(從執行console.log複製)相同的數據:

1: Object 
course_is_active:"1" 
course_name:"Course for whatever" 
course_price:"52.00" 
cs_days_to_complete:"120" 
days_to_complete:0 
description_for_school:"" 
id:"544" 
is_print_only:"0" 
logo:"assets/images/new_course.png" 
name:"Tennessee" 
offer_pdf:"0" 
parent_version_id:"0" 
pdf_final_price:"0.00" 
price:"52" 
simple_course:"0" 
state_id:"50" 
user_in_course:"no" 
user_is_waiting:"no" 
version_number: "1" 

我在網格加載數據如下所示:

var courses_grid = $("#courses_grid").kendoGrid({ 
    dataSource: { 
    data: course_data, 
    schema: { 
     model: { 
     fields: { 
      id: { 
      type: "number" 
      }, 
      course_name: { 
      type: "string" 
      }, 
      course_short_description: { 
      type: "string" 
      } 
     } 
     } 
    }, 
    pageSize: 10, 
    }, 
    toolbar: kendo.template($("#course-header-template").html()), 
    rowTemplate: kendo.template($("#rowTemplateCourse").html()), 
    groupable: false, 
    sortable: true, 
    selectable: "single", 
    pageable: { 
    refresh: true, 
    pageSizes: true, 
    buttonCount: 5 
    }, 
    columns: [{ 
    title: "Status", 
    width: 100 
    }, { 
    title: "Course Name", 
    }] 
}); 

當頁面加載時,我收到一個錯誤,說明course_is_active未定義。我不明白它是如何定義的,因爲它顯然在這裏並且有價值。有人能幫我解決這個問題嗎?在錯誤

更多信息:

Uncaught ReferenceError: course_is_active is not defined 
(function(data 
/**/) { 
var $kendoOutput, $kendoHtmlEncode = kendo.htmlEncode;with(data){$kendoOutput='\n\t <tr data-cid="'+$kendoHtmlEncode(id)+'" class="course-row" id="course-row'+$kendoHtmlEncode(id)+'">\n   <td>\n    <span class="circle-indicator label-';if(course_is_active == 1){;$kendoOutput+='success';}else{;$kendoOutput+='danger';};$kendoOutput+='"></span>\n   </td>\n\t\t <td>\n    '+$kendoHtmlEncode(course_name)+' - '+(name)+'\n\t\t </td>\n\t\t\t<td>\n    <span class="badge element-bg-color-blue">ver. '+$kendoHtmlEncode(version_number)+'</span>\n\t\t </td>\n\t </tr>\n\n';}return $kendoOutput; 
}) 
+0

好吧,'course_data [0] .course_is_active'顯然是「這裏有一個值」 - 也許你可以展示更多關於在控制檯中出現的錯誤以及哪行代碼導致錯誤 –

+0

VM34539:3 Uncaught ReferenceError :package_is_active未定義 –

+0

您能否看到'package_is_active'與'course_is_active'不同# –

回答

1

我已經找到了問題。在我的PHP代碼中,我檢查數組是否等於0,如果是,我將從數組中刪除該元素。這恰好是我在視圖中加載的二維數組中的第一個元素,所以當KendoUI開始在表中加載變量時,它會從[0]索引開始,不存在,並引發錯誤。感謝參與的每個人。

相關問題