我们如何使用 ExtJs MVVM 模式扩展 View ?扩展绑定(bind)了 View Controller 的 View 的正确方法是什么?
我有一个带有 View Controller 的基本 View ,我想扩展它,就像在 this fiddle 中那样.
问题是基本 View Controller 中定义的方法在扩展 View 中不再可用。 ExtJs 仅在扩展 View Controller 中查找要调用的方法。
Ext.define('Fiddle.view.Base', {
extend: 'Ext.panel.Panel',
requires: [
'Fiddle.view.BaseController'
],
controller: 'base',
tbar: [{
text: 'Base button',
handler: 'onBaseMethod'
}]
})
Ext.define('Fiddle.view.BaseController', {
extend: 'Ext.app.ViewController',
alias: 'controller.base',
onBaseMethod: function(me){
Ext.Msg.alert('Base', 'Base method')
}
})
Ext.define('Fiddle.view.Extended', {
extend: 'Fiddle.view.Base',
requires: ['Fiddle.view.ExtendedController'],
controller: 'extended',
title: 'Viewcontroller inheritance',
bodyPadding: 5,
html: 'The Base button does not work, because the method is searched in ExtendedController only.',
bbar: [{
text: 'Extended button',
handler: 'onExtendedMethod'
}]
})
Ext.define('Fiddle.view.ExtendedController', {
extend: 'Ext.app.ViewController',
alias: 'controller.extended',
onExtendedMethod: function(me){
Ext.Msg.alert('Extended', 'Extended method')
},
renderTo: Ext.getBody()
})
最佳答案
您可以使用 onExtendedMethod 方法简单地扩展“Fiddle.view.BaseController”。 见 fiddle https://fiddle.sencha.com/#fiddle/20m3
明确地说:只需替换
Ext.define('Fiddle.view.ExtendedController', {
extend: 'Ext.app.ViewController',
与
Ext.define('Fiddle.view.ExtendedController', {
extend: 'Fiddle.view.BaseController',
关于extjs - 在 View 和 View Controller 之间继承的 MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44289133/