this.control({ '#antiStealList [eventHook=j-addOneData]': {click:this.addOneData }
});
假设你已经很熟练使用 this.control 在controller中监听view中的事件,好那我们搜‘Ext this.control actioncolumn’这几个关键字。哇有用的资料很多,老外解决问题比较彻底,因为所以怎么个事他都将,甚至还给出了demo。
来我们分享一下过程,顺便给需要这个技术点的同学们一个解释,希望我的解释能像老外给我的映像一样给你。
首先this.control中的过滤是对整个页面的component中过滤的,所以#antiStealList是我当前的view,然后后面是针对component的过滤,为什么像面那样不管用呢,这篇帖子给出了答案,http://stackoverflow.com/questions/12716675/how-to-perform-view-controller-separation-when-using-an-actioncolumn-ext-grid,其中有这么一句“
The problem is not in actioncolumn but in its items which are not ExtJs Widgets. This items are simple images. That's why we cannot assign handlers in control in such a way:
this.control({'mygrid actioncolumn button[type=edit]':this.onEdit
”这句我能看懂,是说actioncolumn中的可点击的那些个小按钮只是一个图片,不是component(组件),不能像上面那样去监听。然后有这么一句话“Unfortunately this way is impossible. But There is another way, which is almost as clean as the preferred one: make actioncolumn handler to fire grid's custom event”我又看懂了:“很不幸这个方法不行,但是我们还有另外一个方法,一个较为简洁的方法,用actioncolumn的handler触发grid的客户事件”。然后给出了demo的链接:http://jsfiddle.net/molecule/g3prq/,再付张截图:
,
这个问题就完美解决了,重要的是我们学会了方法。