Browse Source

主从表isDirty/isValid只判断界面字段

zhuth 7 years ago
parent
commit
2eaef30bf5
1 changed files with 15 additions and 8 deletions
  1. 15 8
      frontend/saas-web/app/view/core/form/FormPanel.js

+ 15 - 8
frontend/saas-web/app/view/core/form/FormPanel.js

@@ -237,7 +237,8 @@ Ext.define('saas.view.core.form.FormPanel', {
     addItems: function (items) {
         var me = this;
         me.setBindFields(items);
-        return me.add(items);
+        var formItems = me.formItems = me.add(items);
+        return formItems;
     },
 
     /**
@@ -342,11 +343,11 @@ Ext.define('saas.view.core.form.FormPanel', {
 
         Ext.Array.each(items, function (item) {
             var xtype = item.xtype,
-                bind = item.bind,
-                name = item.name,
-                ignore = item.ignore,
-                defaultValue = item.defaultValue;
-
+            bind = item.bind,
+            name = item.name,
+            ignore = item.ignore,
+            defaultValue = item.defaultValue;
+            
             if (xtype == 'detailGridField') {
                 item.listeners = item.listeners || {};
                 item.listeners.validChange = function() {
@@ -419,7 +420,10 @@ Ext.define('saas.view.core.form.FormPanel', {
     isValid: function() {
         var me = this;
         var viewModel = me.getViewModel();
-        var valid = me.getForm().isValid();
+        var formItems = me.formItems;
+        var valid = !!Ext.Array.findBy(formItems, function(f) {
+            return f.isValid();
+        });
         var detailGrids = me.query('detailGridField');
 
         for(var i = 0; i < detailGrids.length; i++) {
@@ -435,6 +439,7 @@ Ext.define('saas.view.core.form.FormPanel', {
 
     isDirty: function () {
         var me = this,
+        formItems = me.formItems,
         detailGrids = me.query('detailGridField'),
         dirty = false;
 
@@ -447,7 +452,9 @@ Ext.define('saas.view.core.form.FormPanel', {
         }
 
         if(!dirty) {
-            dirty = me.callParent();
+            dirty = !!Ext.Array.findBy(formItems, function(f) {
+                return f.isDirty();
+            });
         }
 
         return dirty;