我定义了一个这样的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>'}
]
}),
...
..
函数调用onClick = "viewMessage({msgDetails})"
失败,因为msgDetails有双引号和特殊字符,我相信它需要某种编码才能作为函数参数传递。
这可以做什么?
编辑:这是msgDetails的来源:
var records = Ext.data.Record.create([{name: 'msgId', type:'string', mapping: 'msgId'},
{name: 'msgDetails',type:'string', mapping: 'msgDetails'}]);
答案 0 :(得分:1)
我认为单引号和双引号没有任何问题。您不需要对它们进行编码以将它们用作函数参数。
我认为问题是以下位不是有效的JavaScript:
viewMessage({msgDetails})
如果你有一个使用{}的对象文字,你必须提供一个或多个键值对。我不确定你在那里做什么,但大概你的意思是:
viewMessage(msgDetails)
// or
viewMessage({msgDetails : 'some details'})
如果您展示了msgDetails
的定义位置和方式,我可以提供更具体的建议。
答案 1 :(得分:1)
您应该为特殊字符使用HTML定义的字符集。例如
& ampersand &
< less than sign <
> greater than sign >
" the double quote sign "
' single quote '
答案 2 :(得分:0)
当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。