98国产在线视频福利_欧亚v视频日韩一区二区_国产在线精彩视频_亚洲伊人久久综合影院_亚洲欧美高清激情精品一区_少妇熟女天堂网av_午夜福利日本专区_中美女子成人毛片_大荫蒂毛茸茸视频国产_小14萝裸体自慰洗澡大尺度
登錄
注冊
關(guān)于我們
簡(jiǎn)體中文
ENGLISH
搜索
購物車(chē)
0 ITEMS ON YOUR CART
去購物車(chē)結算
合計:
¥0
首頁(yè)
動(dòng)態(tài)
方案
案例
專(zhuān)欄
期刊
聯(lián)系我們
首頁(yè)
期刊
[Ext JS6] ViewControllers-視圖控制器
Ext JS開(kāi)發(fā)大全
第1章 Ext JS快速入門(mén)示例[4/4]
第12章[12.10]富文本編輯器 CKEditor與Ext JS的整合
第12章[12.10.1] Ext JS + CKEditor+Spring Boot 實(shí)現編輯器圖片上傳
第11章[11.6] Ext JS 自行搭建遠端庫的包升級版本后找不到的問(wèn)題解決
[Ext JS 4] 實(shí)戰之Grid, Tree Gird編輯
ext命令集
第12章[12.3] Ext JSGrid中的超鏈接列及其功能實(shí)現
[Ext JS]textfield添加compositionstart、compositionupdate 和compositionend _os
[Ext JS ] 動(dòng)添切換字段的必填與非必填
3.1 Ext JS 組件總覽
[Ext JS] Grid表格批量編輯的實(shí)現
Ext JS 快速開(kāi)發(fā)工具
帶觸發(fā)器按鈕的輸入框
Ext JS的布爾對象類(lèi)型處理及便捷方法
Ext JS的Object類(lèi)型處理及便捷方法
ExtJS RadioGroup(單選按鈕組) 使用及注意事項
Ext JS 模擬后端數據實(shí)現
ToolTip 實(shí)現全介紹
Ext JS下拉單選框(Combobox,TagFied)使用及疑難問(wèn)題解決
Ext JS應用測試概覽
Sencha Studio 監視工具( Inspect Tool)
Ext JS 4 升級指南
Ext JS 如何定義公用方法(單例類(lèi) or 靜態(tài)方法)
Ext JS的模塊化開(kāi)發(fā)(Package)
Ext3 -- Form 實(shí)例。 用來(lái)migrate file 數據到DB用的
ExtJS 3 在Tab下加入Form 實(shí)例
Extjs Grid 中給已經(jīng)添加過(guò)Filter的列增加標識
Extjs 實(shí)戰之 Ext.tree.TreePanel Tree無(wú)法顯示
Extjs彈出框的異步執行
Grid 動(dòng)態(tài)該表列( reconfigure)的性能改善
Spring Boot Ext JS準前后端框架應用的會(huì )話(huà)(Session)處理
[Ext JS 4] Extjs 圖表 Legend(圖例)的分行與分列顯示
[Ext JS 4] Extjs 之 initComponent 和 constructor的區別
[Ext JS 4] Grid 中的單元格添加Tooltip 的效果
[Ext JS 4] Grid 實(shí)戰之分頁(yè)功能
[Ext JS 4] Grid 組件
[Ext JS 4] MVC 應用程序框架
[Ext JS 4] MVC 應用程序框架
發(fā)布 [Ext JS 4] contentEL,renderTo, applyTo 釋義與區別
[Ext JS 4] 動(dòng)態(tài)加載
[Ext JS 4] 實(shí)戰之 ComboBox 和 DateField (消失之解決辦法)
[Ext JS 4] 實(shí)戰之 Picker 和 Picker Field
[Ext JS 4] 實(shí)戰之 帶week(星期)的日期選擇控件(二)
[Ext JS 4] 實(shí)戰之 ComboBox 和 DateField 的點(diǎn)擊事件在IE下失效
## [Ext JS 4] 實(shí)戰之 帶week(星期)的日期選擇控件(三)
[Ext JS 4] 實(shí)戰之 帶week(星期)的日期選擇控件
[Ext JS 4] 實(shí)戰之Chart 坐標控制(單坐標,雙坐標)
[Ext JS 4] 實(shí)戰之Chart, Column Chart 定制顏色
[Ext JS 4] 實(shí)戰之Grid, Tree Gird 動(dòng)態(tài)添加列
[Ext JS 4] 實(shí)戰之Grid, Tree Gird 動(dòng)態(tài)添加列續(性能考慮)
[Ext JS 4] 實(shí)戰之Grid, Tree Gird 動(dòng)態(tài)添加行
[Ext JS 4] 實(shí)戰之Grid, Tree Gird 添加按鈕列
[Ext JS 4] 實(shí)戰之Grid, Tree Gird編輯Cell
[Ext JS 4] 實(shí)戰之Load Mask - 在Grid Reconfigure的使用狀況
[Ext JS 4] 實(shí)戰之Load Mask(加載遮罩)的顯示與隱藏
[Ext JS 4] 實(shí)戰之多選下拉單 (帶checkbox) 續 - 帶ALL 選項
[Ext JS 4] 實(shí)戰之多選下拉單 (帶checkbox)
[Ext JS 4] 實(shí)戰之升級系列一[Ext jS 3-->Ext JS 4]
[Ext JS 4] 實(shí)戰之將chart導出為png, jpg 格式的文件
[Ext JS 4] 實(shí)戰之瀏覽器兼容
[Ext JS 4] 布局之實(shí)戰二 - 中間區塊不會(huì )自動(dòng)伸展 (tab)續
[Ext JS 4] 組件之圖表
[Ext JS 4]后臺自動(dòng)產(chǎn)生圖檔
[Ext JS 4]性能優(yōu)化
[Ext JS 7 ]7.5 自適應配置 - Responsive Configs
[Ext JS 7] 關(guān)聯(lián)(Association)
[Ext JS 7]事件(Event)
[Ext JS 7]ClassRequire錯誤解決
[Ext JS 7]的開(kāi)發(fā)模式
[Ext JS 7]基于NPM的開(kāi)發(fā)
[Ext JS ] 動(dòng)添切換字段的必填與非必填
[Ext JS4] 數據包
[Ext JS4系列]Ext JS4 入門(mén)
[Ext JS6] Grid不同列的關(guān)聯(lián)編輯
[Ext JS6] ViewControllers-視圖控制器
[Ext JS6]Ext.Template
[Ext JS6]Sencha Cmd
[Ext JS6]編碼規范
[Ext JS6]多類(lèi)型設備開(kāi)發(fā)
[Ext JS6]工作區-Workspace
[Ext JS6]路由(Routing)及使用
[Ext JS6]視圖模型和數據綁定
[Ext JS6實(shí)戰] Ajax獲取Tree Store
[Ext JS6實(shí)戰] Ext.XTemplate
[Ext JS6實(shí)戰]動(dòng)態(tài)數據綁定
[Ext JS] Sencha Cmd命令參考之二
[Ext JS] Sencha Cmd命令參考之一
[Ext JS] Group Grid-分組網(wǎng)格
[Ext JS] Group Grid-分組網(wǎng)格
[Ext JS]嵌套Grid的實(shí)現及注意事項
[Ext JS]SimXhr.js__dc=1659315492151_65 Uncaught TypeError問(wèn)題分析與解決
[Ext JS]Sencha Studio安裝與快速介紹之一
[Ext JS]textfield 添加 compositionstart、compositionupdate 和 compositionend
[Ext JS]圖片顯示方式
[ExtJS 6]Grid分頁(yè)工具欄無(wú)效問(wèn)題解決
[ExtJS6]ResponsiveColumn-自適應列布局
[Extjs 4] 類(lèi)系統
基于Ext JS的模塊化應用框架搭建及開(kāi)發(fā)
[Ext JS] 自行搭建遠端庫的包升級版本后找不到的問(wèn)題解決-The following versions are available
[Ext JS]鼠標移入移除時(shí)彈出和關(guān)閉窗口
[Ext JS]富文本編輯器 CKEditor與Ext JS的整合
[Ext JS]可編輯列Grid的全場(chǎng)景開(kāi)發(fā)
['Ext JS]Grid中的超鏈接列及其功能實(shí)現
[Ext JS]Ext JS + CKEditor+Spring Boot 實(shí)現編輯器圖片上傳
[Ext JS]介紹與快速入門(mén)1
[Ext JS]實(shí)現帶動(dòng)態(tài)數字的圖標
Spring Boot+Ext JS 實(shí)現圖形驗證碼
Ext JS介紹與快速入門(mén)2
Ext JS開(kāi)發(fā)基本環(huán)境準備與項目創(chuàng )建
[Ext JS]開(kāi)發(fā)模式及快速測試方式
[Ext JS]多類(lèi)型終端-電腦、移動(dòng)端(手機、平板)
[Ext JS]基于Ext JS的MVC/MVVM架構的應用開(kāi)發(fā)模式
[Ext JS]Ext JS的類(lèi)與類(lèi)體系
[Ext JS]Ext JS組件、容器與布局
[Ext JS]組件與容器的選擇與開(kāi)發(fā)
[Ext JS]Ext JS數據模型與數據封裝
[Ext JS]Ext JS的控制器類(lèi)型及使用
[Ext JS]說(shuō)透Ext JS的窗口及對話(huà)框用法
[Ext JS]說(shuō)透Ext JS的窗口及對話(huà)框用法
[Ext js]Grid行選擇的多種場(chǎng)景和實(shí)現方式
[Ext JS]Ext JS類(lèi)的繼承與混合
CmsWing
[Ext JS6] ViewControllers-視圖控制器
## [Ext JS6] ViewControllers-視圖控制器 Ext JS 加入了ViewModels和 MVVM, 可以像MVC的 ViewController一樣。這兩種方式不相互排斥, 甚至可以混合使用。 ### 應用層級控制器 - Application-level Controllers 一個(gè)控制器繼承自Ext.app.Controller, 這些控制器使用類(lèi)似 CSS的選擇器來(lái)查找組件和響應事件。也可以通過(guò) refs 選擇或獲取組件實(shí)例。 這些控制器在應用啟動(dòng)的時(shí)候創(chuàng )建, 會(huì )在整個(gè)應用的生命周期中存在??刂破饕部梢怨芾矶鄠€(gè)視圖的實(shí)例。 在大型項目中, 視圖和控制器可能是有多個(gè)不同開(kāi)發(fā)團隊開(kāi)發(fā),最終集成到應用中。 要確??刂破鲀H對其相關(guān)的視圖響應是比較困難的。另外, 開(kāi)發(fā)人員通常希望在應用啟動(dòng)的時(shí)候限制控制器的數量。雖然可以通過(guò)一些方法懶加載控制器, 但是即使不需要它們也不會(huì )被銷(xiāo)毀。 ### 視圖控制器 - ViewControllers Ext JS5及之后版本向后兼容合法的應用層級控制器。引入了新的控制器類(lèi)型Ext.app.ViewController, 解決了大型項目控制器的問(wèn)題。 使用 “l(fā)isteners”和 “reference”配置簡(jiǎn)化了和視圖的連接 -利用視圖的生命周期管理和其管理的視圖控制器的生命周期 -基于一對一的視圖管理關(guān)系降低了視圖控制器的復雜性 -提供封裝使嵌套視圖可靠 -保留在關(guān)聯(lián)視圖下方的任何級別選擇組件并收聽(tīng)其事件的功能。 ### 監聽(tīng)器 listeners 實(shí)例 View子項的監聽(tīng)配置實(shí)例 ```javascript Ext.define('MyApp.view.foo.Foo', { extend: 'Ext.panel.Panel', xtype: 'foo', controller: 'foo', items: [{ xtype: 'textfield', fieldLabel: 'Bar', listeners: { change: 'onBarChange' // no scope given here } }]}); ``` 在控制器中的配置: ```javascript Ext.define('MyApp.view.foo.FooController', { extend: 'Ext.app.ViewController', alias: 'controller.foo', onBarChange: function (barTextField) { // called by 'change' event }}); ``` 'onBarChange’沒(méi)有指定范圍, 則默認查找屬于它自己的控制器。 安裝經(jīng)驗, 監聽(tīng)配置是預留給組件創(chuàng )建者使用。所以視圖如何監聽(tīng)自己的事件,還是由其基類(lèi)觸發(fā)的?答案是需要顯示定義范圍scope。 ```javascript Ext.define('MyApp.view.foo.Foo', { extend: 'Ext.panel.Panel', xtype: 'foo', controller: 'foo', listeners: { collapse: 'onCollapse', scope: 'controller' }, items: [{ ... }]}); ``` 上面使用了 Ext JS的兩個(gè)新功能: 范圍(scopes)和聲明式監聽(tīng) (declarative listeners)。 Scope的值可以是 this 和 controller。如果是 MVC的應用, 大部分使用controller。 因為View是一種類(lèi)型的Ext.Component, 指定視圖的 xtype,這樣其他的視圖就可以使用這種方式來(lái)創(chuàng )建。例如: ```javascript Ext.define('MyApp.view.bar.Bar', { extend: 'Ext.panel.Panel', xtype: 'bar', controller: 'bar', items: [{ xtype: 'foo', listeners: { collapse: 'onCollapse' } }]}); ``` ### 引用 - Reference 在完成控制器邏輯的時(shí)候, 常見(jiàn)的松散耦合的方式是獲取需要的組件完成特定的動(dòng)作, 類(lèi)似: ```javascript Ext.define('MyApp.view.foo.Foo', { extend: 'Ext.panel.Panel', xtype: 'foo', controller: 'foo', tbar: [{ xtype: 'button', text: 'Add', handler: 'onAdd' }], items: [{ xtype: 'grid', ... }]}); Ext.define('MyApp.view.foo.FooController', { extend: 'Ext.app.ViewController', alias: 'controller.foo', onAdd: function () { // ... get the grid and add a record ... }}); ``` 如何獲取組件, 比如上面的Grid組件, 最快的方式就是通過(guò) 配置的id使用 getCmp方法, 或者是 配置ItemId通過(guò) refs或者是組件查找的方法, id查找不好的地方就是整個(gè)應用id及對應的DOM必須唯一。使用 itemId或者組件查找有彈性一點(diǎn),但是需要通過(guò)查找的方式獲取。 使用 reference?配置,可以簡(jiǎn)單的通過(guò)lookupReference的方式來(lái)獲取。實(shí)例如下: ```javascript Ext.define('MyApp.view.foo.Foo', { extend: 'Ext.panel.Panel', xtype: 'foo', controller: 'foo', tbar: [{ xtype: 'button', text: 'Add', handler: 'onAdd' }], items: [{ xtype: 'grid', reference: 'fooGrid' ... }]}); Ext.define('MyApp.view.foo.FooController', { extend: 'Ext.app.ViewController', alias: 'controller.foo', onAdd: function () { var grid = this.lookupReference('fooGrid'); }}); ``` 這種方式和指定 itemId 之后通過(guò)this.down()的方式獲取很類(lèi)似。但是, 實(shí)現的引擎則有很大差異。 首先 reference?配置指示組件在其視圖中組測自己(在這種情況下通過(guò)ViewController的存在來(lái)識別) 另外, lookupReference方法只是簡(jiǎn)單的咨詢(xún)緩存是否需要刷新引用, 偽代碼類(lèi)似: ```javascript lookupReference: (reference) { var cache = this.references; if (!cache) { Ext.fixReferences(); // fix all references cache = this.references; // now the cache is valid } return cache[reference]; } ``` 也就是說(shuō), 這種方式?jīng)]有搜索而且在容器中添加或是刪除組件也是一次性調整, 除了性能上提升外,還有其他的好處。 ### 封裝- Encapsulation 使用refs配置來(lái)查找很有彈性, 但是也存在一定風(fēng)險。這個(gè)選擇器雖然可以看到各個(gè)層級的組件,但是容易出錯。舉例來(lái)說(shuō), 一個(gè)控制器如果獨立運行的話(huà)沒(méi)有恩替, 但是導入其他的視圖之后就會(huì )失敗了。 使用監聽(tīng)和references?在ViewController?中這些問(wèn)題就不在了。因為listeners 和 reference 配置僅僅定義在自己的ViewController中。 ViewController中有一個(gè)幫助方法:fireViewEvent ```javascript Ext.define('MyApp.view.foo.FooController', { extend: 'Ext.app.ViewController', alias: 'controller.foo', onAdd: function () { var record = new MyApp.model.Thing(); var grid = this.lookupReference('fooGrid'); grid.store.add(record); this.fireViewEvent('addrecord', this, record); }}); ``` 使用標準的監聽(tīng)器: ```javascript Ext.define('MyApp.view.bar.Bar', { extend: 'Ext.panel.Panel', xtype: 'bar', controller: 'bar', items: [{ xtype: 'foo', listeners: { collapse: 'onCollapse', addrecord: 'onAddRecord' } }]}); ``` ### 監聽(tīng)和事件域知識 生命周期 在大型應用中,一般是在首次需要的時(shí)候再動(dòng)態(tài)創(chuàng )建控制器,這樣可以減少系統加載的時(shí)間,提升系統性能。Ext JS早期版本的限制是只要創(chuàng )建就會(huì )一直存在, 無(wú)縫銷(xiāo)毀和釋放資源。同樣,這也沒(méi)有改變一個(gè)控制器有多個(gè)(或是沒(méi)有)關(guān)聯(lián)視圖的現實(shí)。 ViewController 在組件生命周期很早就創(chuàng )建出來(lái)并綁定到視圖的生命周期, 當視圖銷(xiāo)毀時(shí), ViewController也一起銷(xiāo)毀。這意味著(zhù)不再強制ViewController管理沒(méi)有視圖或許多視圖的狀態(tài)。 一對一的關(guān)系意味著(zhù)關(guān)聯(lián)的追蹤簡(jiǎn)單并且不容易發(fā)生銷(xiāo)毀組件的泄漏。ViewController可以實(shí)現任何方法已經(jīng)各生命周期點(diǎn)的任務(wù): beforeInit?: 可以被重寫(xiě)。在組件initComponent?方法調用之前執行。這個(gè)方法在控制器創(chuàng )建完成之后就立即執行, 一般發(fā)生在組件構造器呼叫initConfig. init?: 視圖調用initComponent?不久后調用。 initViewModel? - 在視圖的ViewModel?創(chuàng )建的時(shí)候調用。 destroy?: 清除并返回資源, 一定要調用callParent
← 上一篇:工業(yè)ERP系統五十問(wèn)...
下一篇:MySQL知識大全... →
網(wǎng)站導航
首頁(yè)
動(dòng)態(tài)
方案
案例
專(zhuān)欄
期刊
聯(lián)系我們