2010-09-22 57 views
1

当我在Ext.js中重置表单时,它会重置每个子组件,但唯一触发的事件是invalidvalid。钩住他们来处理价值的清理似乎有点“哈克”,难道没有其他办法吗? 的“问题域”是我写一个插件来创建相关的组合框:确实没有办法挂钩Ext.js组件的重置事件吗?

Ext.plugins.combobox.DependsOn = function(dependsOn) { 
    function init() { 
     var cb = this, 
      parent = Ext.getCmp(dependsOn); 

     parent.on("disable", function() { 
      cb.clearValue(); 
      cb.disable(); 
     }); 

     parent.on("select", function() { 
      cb.disable(); // dependents will be disabled 
      cb.clearValue(); 

      cb.getStore().load(); 
      cb.enable(); 
     }); 

    } 
    return { 
     init: function(cb) { 
      cb.afterRender = cb.afterRender.createSequence(init); 
     } 
    } 
}; 

这种运作良好,直到我打电话form.reset()此时组合框保持启用状态,但空。我希望能够钩住一些reset事件,并在那里禁用并使我的顶级组件向下级联禁用状态。唉,这似乎是不可能的,但我希望有人有一个聪明的答案。

谢谢。

回答

1

假设“parent”是一个Ext.form.Field,您可以在parent.reset上使用createSequence。

parent.reset = parent.reset.createSequence(function(){ 
    //here, do what you would have done with parent.on('reset', ...) 
}); 
+0

啊,是的。我没有想到这一点。它确实感觉有点像黑客,但我认为这是完成我所要求的唯一方法。谢谢! – einarmagnus 2010-09-30 12:42:39