ItemTpl onclick函数调用extjs 6

时间:2017-02-17 07:08:09

标签: javascript extjs sencha-touch extjs6

如何在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而且我无法将所有逻辑都放在一个中心控制器上

1 个答案:

答案 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得到这个,所以请原谅我所犯的任何错误并纠正我,以便我可以编辑答案。