2012-07-16 109 views
0

下面是我的extjs 4 MVC應用程序的根應用程序文件JavaScript文件。將ASP.NET體系結構與Sencha Ext JS MVC體系結構混合

我跟着這些指令準確,並使用IIS 7作爲我的Web服務器:
http://docs.sencha.com/ext-js/4-1/#!/guide/application_architecture

並遵循這些說明配置IIS的框架:
http://www.sencha.com/forum/showthread.php?33266-Some-Problem-with-JSON&p=229858&viewfull=1#post229858

我想借一個ASP.NET用戶控件(ascx文件)並將其添加到我的頁面。它已經被註冊了,但好像Sencha框架接管並忽略了我在頁面中的內容。我只是將他們在MVC教程中使用的index.html文件作爲一個aspx頁面,並做了一些小的調整。我怎樣才能讓控制顯示出來?如果這是不可能的,你建議我引用這個app.js文件(並重新命名它control_x.js代替app.js)的ASCX文件裏,然後堅持用戶控件(ASCX)和其他(目前不工作)到ASP.NET(aspx)頁面?實質上,我不想依賴這個框架來完成我的整個應用程序,只是我不想構建自己的控件。

app.js:

Ext.application({ 
    requires: ['Ext.container.Viewport'], 
    name: 'AM', 
    appFolder: 'app', 

    controllers: [ 
     'Users' 
    ], 

    launch: function() { 
     Ext.create('Ext.container.Viewport', { 
      layout: 'fit', 

      items: { 
       xtype: 'userlist' 
      } 

     }); 
    } 
}); 

Users.js(控制器):

Ext.define('AM.controller.Users', { 
    extend: 'Ext.app.Controller', 

    stores: [ 
     'Users' 
    ], 

    models: [ 
     'User' 
    ], 

    views: [ 
     'user.List', 
     'user.Edit' 
    ], 

    init: function() { 
     console.log('Initialized Users! This happens before the Application launch function is called'); 
     this.control({ 
      'viewport > panel': { 
       render: this.onPanelRendered 
      }, 
      'viewport > userlist': { 
       itemdblclick: this.editUser 
      }, 
      'useredit button[action=save]': { 
       click: this.updateUser 
      } 
     }); 
    }, 

    onPanelRendered: function() { 
     //console.log('The panel was rendered'); 
    }, 

    editUser: function(grid, record) { 
     //console.log('Double clicked on ' + record.get('name')); 
     var view = Ext.widget('useredit'); 
     view.down('form').loadRecord(record); 
    }, 

    updateUser: function(button) { 
     //console.log('clicked the Save button'); 
     var win = button.up('window'), 
      form = win.down('form'), 
      record = form.getRecord(), 
      values = form.getValues(); 

     record.set(values); 
     win.close(); 
     // synchronize the store after editing the record 
     this.getUsersStore().sync(); 
    } 

}); 
+0

這沒有奏效。應用程序視圖面板跨越整個瀏覽器窗口,即使放在ASP.NET用戶控件中也是如此。現在,我發現了一種不同的方法,將視圖和模型放入單獨的控件中,並使用偵聽器而不是控制器。 – MacGyver 2012-07-20 05:09:56

回答

1

這裏的答案是性能。如果您將JavaScript用於應用程序,請將它全部保留在同一頁面上。否則,當您切換頁面時,您的JavaScript將不得不重新加載。