2011-08-23 8 views
0

DataGridがレンダリングされているときに、途中でエラーが発生した場合(私の場合はcell.formatterまたはcell.getを使用することが多い)、グリッドは例外をキャッチし、単純で、「申し訳ありませんが、エラーが発生しました」という曖昧なメッセージが表示されます。dojoデータグリッドの例外トラップを無効にする

エラーが発生したときにデバッグコンソールに表示されるように、その例外トラップを抑制する方法はありますか?

答えて

0

dojoのデフォルト動作でこれを行う方法が見つかりませんでした。回避策として、グリッドに渡す前に小さなユーティリティを使ってレイアウト構造を変更しました。 (ハックの種類ですが、マークアップではなく、スクリプトでグリッドを作ったので、今のところ動作し、新しいグリッドが図面ボードに表示されます....

lib.wrapTryCatch = function(call, onException){ 
    onException = onException || function(e){ 
      console.log({wrappedException: e}); 
      return e.message; 
     }; 

    var f = function tryWrapper(){ 
     try{ 
      var val = call.apply(this, arguments); 
      return val; 
     } 
     catch(e){ 
      return onException(e); 
     } 
    } 
    f.wrapped = call; 
    f.onException = onException; 
    return f; 
} 

lib.gridUtils = { 

    /** Convenience/debugging function to make exceptions visible 
    * if grid structure cells have errors. 
    * 
    * Puts exception to the console, instead of the grid's default 
    * behavior of dying silently 
    * 
    * */ 
    decorateStructure: function(structure){ 

      for(var idx in structure){ 
       cell = structure[idx]; 

       if('get' in cell){ 
        cell.get = lib.wrapTryCatch(cell.get); 
       } 

       if('formatter' in cell){ 
        cell.formatter = lib.wrapTryCatch(cell.formatter); 
       } 

      } 
      return structure; 
     } 
} 
関連する問題