ItemTpl onclick 函数调用 extjs 6

ItemTpl onclick function call extjs 6

如何在数据视图上调用 onclick 函数,

itemTpl: [
'<a onClick="this.getViewController().somefunction({id},{code});" href="#">{code}</a><br/>',
]

并在 viewController

somefunction: function(){
// some logic
}

给出了

的错误

this.getViewController() is not a function

注意:我不想做 MyApp.app.getController() 因为我有很多 ViewController,我不能把我所有的逻辑都放在中央控制器上

如果你真的想在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,所以请原谅我犯的任何错误并纠正我,以便我可以编辑答案。