如何在dataview上调用onclick函数,
itemTpl: [
'<a onClick="this.getViewController().somefunction({id},{code});" href="#">{code}</a><br/>',
]
和viewController
somefunction: function(){
// some logic
}
给出错误
this.getViewController()不是函数
注意:我不想做MyApp.app.getController()
,因为我有很多ViewControllers而且我无法将所有逻辑都放在一个中心控制器上
答案 0 :(得分:1)
如果你真的想要绑定itemTpl
中的点击功能,你需要指定模板中可访问的功能,如下所示:
// Save 'this' scope to me variable for use in XTemplate scope
var me = this;
// ...
itemTpl: [
'<a onClick="this.someFunction();" href="#">{code}</a><br/>',
// Defining funtions accessible in the XTemplate
{
someFunction: function() {
// Use 'me' here, because 'this' is XTemplate
me.getViewController().someFunction();
}
}
]
但是如果可能的话,我会在项目上使用点击监听器,如下所示:
// Save 'this' scope to me variable for use in the item scope
var me = this;
// ...
itemConfig: {
listeners: {
click: function() {
// Use 'me' here, because 'this' is the item
me.getViewController().someFunction();
}
}
}
我通常在ExtJS 4中工作,只是从ExtJS 6 documentation得到这个,所以请原谅我所犯的任何错误并纠正我,以便我可以编辑答案。