javascript - JavaScript関数の引数に特殊文字をエンコードする

javascript extjs extjs3

私は次のようにext js列モデルを定義しました:

new Ext.grid.ColumnModel({
  defaults: {
    sortable: true
  },
  columns: [
    {id:'msgId',hidden: true, dataIndex: 'msgId'},                  
    {header: 'info',xtype: 'templatecolumn',tpl: '<a href="#"  onClick = "viewMessage({msgDetails})">View Message Details</a>'} 
  ]
}),
...
..


msgDetailsには二重引用符と特殊文字が含まれているため、関数呼び出しonClick = "viewMessage({msgDetails})"は失敗します。関数の引数として渡す前に、なんらかのエンコードが必要だと思います。
ここで何ができますか?

編集:これはmsgDetailsのソースです:

var records = Ext.data.Record.create([{name: 'msgId', type:'string', mapping: 'msgId'},
{name: 'msgDetails',type:'string',  mapping: 'msgDetails'}]);
答え
msgDetailsフィールドが文字列の場合、少なくともそれを引用する必要があります。

tpl: '<a href="#"  onClick="viewMessage(\'{msgDetails}\')">View Message Details</a>'


ただし、壊れやすいインラインJavaScriptを記述する代わりに、リスナーをcellclickイベントにバインドするだけです。

var infoColumnIndex = 1;
grid.on("cellclick", function(grid, rowIndex, colIndex) {
    if (colIndex === infoColumnIndex) {
        viewMessage(grid.getStore().getAt(rowIndex).get("msgDetails"));
    }
});


または、ActionColumnを見てください。
関連記事

javascript - 別のクライアント(新しいタブ)が接続すると、マルチプレイヤーJavaScriptゲームが遅くなるのはなぜですか?

javascript - fillStyle内で直接乱数を生成することはできませんか?

javascript - 多重継承の質問

javascript - jQueryを使用して列の値の総数を集計するにはどうすればよいですか?

javascript - <img>要素を取得して、そのエラーを再評価するにはどうすればよいですか?

javascript - Djangoは組み込みウィジェットをローカライズします

javascript - Google Maps v3マーカーイベント

javascript - プログラムでテキストボックスの値を変更するとIE8が変更イベントを起動する

javascript - JCropがJavaScriptコードで機能しない

javascript - NodeJS用のRDF / XML JavaScriptコンバーターへのN-triples