2012-06-05 64 views
0

我試圖實現CakePHP的項目的編輯頁面SlickGrid,並在頁面加載時我得到這個錯誤在JavaScript控制檯:SlickGrid錯誤:Slick.Editors.Text是不是構造

slick.grid.js:2173TypeError:'Slick.Editors.Text is not a constructor' (evaluating 'new (editor || getEditor(activeRow, activeCell))') 

數據在我的頁面上的網格中呈現正確,但是當我單擊一個單元格進行編輯時,它只是變成白色,我無法輸入任何內容。如果我點擊另一個單元格,該單元格將變成白色,第一個單元格將保持白色。

這裏是我的PHP/jQuery代碼:

<?php echo $this->Html->script("/js/slickgrid/lib/jquery-1.7.min.js"); ?> 
<?php echo $this->Html->script("/js/slickgrid/lib/jquery.event.drag-2.0.min.js"); ?> 
<?php echo $this->Html->script("/js/slickgrid/lib/jquery-ui-1.8.16.custom.min.js"); ?> 
<?php echo $this->Html->script("/js/slickgrid/slick.core.js"); ?> 
<?php echo $this->Html->script("/js/slickgrid/slick.grid.js"); ?> 
<?php echo $this->Html->script("/js/slickgrid/slick.editors.js"); ?> 
<?php echo $this->Html->script("/js/slickgrid/slick.formatters.js"); ?> 
<?php echo $this->Html->script("/js/slickgrid/slick.dataview.js"); ?> 
<?php echo $this->Html->script("/js/slickgrid/plugins/slick.cellselectionmodel.js"); ?> 
<?php echo $this->Html->script("/js/slickgrid/plugins/slick.cellrangedecorator.js"); ?> 
<?php echo $this->Html->script("/js/slickgrid/plugins/slick.cellrangeselector.js"); ?> 
<?php echo $this->Html->script("/js/slickgrid/plugins/slick.rowselectionmodel.js"); ?> 

<?php // Setup rows and cols array for grid 

    $columns = array(); 
    foreach($route['Stop'] as $stop) { 
     $columns[] = array("name" => $stop['name'], 
          "field" => $stop['id'], 
          "id"  => $stop['id'], 
          "editor" => "Slick.Editors.Text"); 
    } 

    $tripId = 1; 
    $thisTrip['id'] = $tripId; 
    foreach($route['RouteTrip'] as $routeTrip) { 
     if($routeTrip['trip_id'] != $tripId) { 
      $rows[] = $thisTrip; 
      $tripId = $routeTrip['trip_id']; 
      $thisTrip['id'] = $tripId; 
     } 
     else { 
      $thisTrip[$routeTrip['stop_id']] = $routeTrip['time']; 
     } 
    } 
?> 

<?php 
     echo $this->Html->scriptBlock(' 

      var rows = '.json_encode($rows).'; 
      var columns = '.json_encode($columns).'; 
      var options = { rowHeight:21, 
          defaultColumnWidth:100, 
          editable:true, 
          enableAddRow:true, 
          enableCellNavigation:true, 
          asyncEditorLoading:false, 
          autoHeight:true, 
          autoEdit:true 
          }; 

      slickgrid = new Slick.Grid($("#scheduleTable"), rows, columns, options); 
      slickgrid.setSelectionModel(new Slick.CellSelectionModel()); 
      slickgrid.updateRowCount(); 
      slickgrid.render(); 
     '); 
?> 

的$行和列$格式正確,且每列有一個「編輯器」屬性與「Slick.Editors.Text」作爲其值。

幫助?

+0

你可以發佈你的列邏輯......錯誤似乎是從那裏來的。 – c0deNinja

回答

1

我剛開始使用slickgrid時也出現了這個錯誤。

錯誤是因爲您將編輯器指定爲字符串而不是類。 因此,刪除「編輯器」=>「Slick.Editors.Text」中的雙引號,並給出「編輯器」=> Slick.Editors.Text

這解決了我的錯誤。希望這個解決方案也能解決你的問題。

0

包含slick.editors.js文件。

此外,確保編輯器被指定爲一個類,而不是一個字符串(我不熟悉PHP,所以它對源代碼不是很明顯,但我懷疑是這種情況)。

+0

我已經做到了。我剛剛更新了我的問題以包含該代碼。 – MattL

相關問題