2014-09-09 2 views
1

У меня есть два вида, и я хочу, чтобы один был вложен внутри другого, как частичный вид. Мои две точки зрения являются следующие:Как добавить пользовательский xtype в другое представление?

ChemicalRisksView.js

Ext.define('HandSurvey.view.ChemicalRisksView', { 
     extend: 'Ext.form.Panel', 
     xtype: 'chemicalrisksview', 
     requires: [ 
      'Ext.form.FieldSet', 
      'Ext.field.Text', 
      'Ext.Button', 
      'HandSurvey.view.SpecificChemicalView' 
     ], 
     config: { 
      items:[{ 
       xtype: 'fieldset', 
       title: 'Fiberglass & Resins', 
       items: [ 
        { 
         name: 'test', 
         xtype: 'specificchemicalview' 
        }, 
        { 
         xtype: 'button', 
         text: 'Save', 
         action: 'saveChemicalRisks', 
         margin: '10 5', 
         ui: 'confirm' 
        } 
       ]   
      }] 
     } 
    }); 

SpecificChemicalView.js

Ext.define('HandSurvey.view.SpecificChemicalView', { 
    extend: 'Ext.form.Panel', 
    xtype: 'specificchemicalview', 
    requires: [ 
     'Ext.form.FieldSet', 
     'Ext.field.Toggle', 
     'Ext.field.Select', 
     'Ext.field.Text', 
     'Ext.Button' 
    ], 
    config: { 
     items:[{ 
      xtype: 'fieldset', 
      title: 'Edit Specific Chemical', 
      items: [ 
       { 
        name: 'name', 
        xtype: 'textfield', 
        label: 'Name' 
       }, 
       { 
        name: 'model', 
        xtype: 'textfield', 
        label: 'Model #' 
       }, 
       { 
        name: 'manufacturer', 
        xtype: 'textfield', 
        label: 'Manufacturer' 
       }, 
       { 
        name: 'averageExposure', 
        xtype: 'textfield', 
        label: 'Average Exposure Time' 
       }, 
       { 
        name: 'msdsOnFile', 
        xtype: 'checkboxfield', 
        label: 'MSDS On File' 
       }, 
       { 
        name: 'additionalInfo', 
        xtype: 'textfield', 
        label: 'Additional Info' 
       }, 
       { 
        xtype: 'button', 
        text: 'Save Chemical', 
        action: 'saveChemical', 
        margin: '10 5', 
        ui: 'confirm' 
       } 
      ]  
     }] 
    } 
}); 

Таким образом, я определил, как xtype specificchemicalview и добавить его к элементам в 'родителя' Посмотреть. Но ничего не происходит. Он просто ничего не показывает в ChemicalRisksView. Я отлаживаю в Chrome и сообщений об ошибках нет.

Я использую этот же метод, чтобы добавить все мои взгляды в мое основное навигационное представление, и это отлично работает. Что мне здесь не хватает?

+0

@Hown_ Метод псевдонима дает тот же результат. Да, когда я добавляю их в свое навигационное представление «в одиночку», они оба работают. – Nick

ответ

2

В HTML, форма не может содержать другую форму. Хотя он может работать в Ext, поскольку он не использует тег <form>, я не думаю, что это хорошая идея. Форма предназначена для того, чтобы содержать поля формы (isFormField:true), что другая форма определенно не одна.

Я бы рассмотрел перепроектирование, где «конкретный вид» расширил FieldSet, добавив необходимые поля формы в качестве своих элементов.

Это должно решить проблему.

+0

Спасибо, что сделал трюк. Невозможно ли содержать одну панель внутри другой? – Nick

+0

Панели можно вложить неограниченно, Формы не могут. – Alexander

+0

Да, вы можете разбить панели по одной причине. Форма в форме вне разумных границ. Даже если бы вы могли заставить его работать как-то, такая установка нелогична и нелегко понять. Мне нравятся простые и простые решения - в вашем случае логика такая: ОК, мне нужно многократно использовать поле, чтобы определить его как класс, а затем использовать там, где мне нужно. – Saki

Смежные вопросы