我有一种情况,我ajax从各种Ext gridpanel等服务器向服务器发出请求.在管理区域.
如果没有活动,则登录用户将被注销.5分钟这是正常的.
在这种情况下,服务器将重定向发送回403登录页面.
现在我插入一个:
listeners: {
exception: function(proxy, response, operation, eOpts) {
if (response.status == '403')
window.location = 'login';
}
}
Run Code Online (Sandbox Code Playgroud)
对于每个store's代理都有点矫枉过正.
有人可以很友好,让我知道如何为ExtJS和服务器之间的所有通信添加一个监听器?
我正在使用MVC应用程序架构,所以它可能是一个controller.js或一个内衬app.js.
谢谢
我一直试图找出Ext JS 4中的要求,我似乎无法得出一个合理的答案.假设我有以下代码:
app.js
Ext.Loader.setConfig({
enabled: true
});
Ext.Loader.setPath('Ext.ux', 'examples/ux');
Ext.application({
name: 'Test',
appFolder: 'app',
controllers: ['TheController'],
requires: ['Test.Utils', 'Test.Utils2'], // I don't think this does anything... couldn't find this option for Ext.application
launch: function() {
Ext.create('Ext.Viewport', {
layout: 'border',
items: [{
xtype: 'thegrid',
region: 'center',
title: 'blah!'
}]
});
}
});
Run Code Online (Sandbox Code Playgroud)
应用程序/控制器/ TheController.js
Ext.define('Test.controller.TheController', {
extend: 'Ext.app.Controller',
models: ['TheModel'],
stores: ['TheStore'],
views: ['TheGrid'],
init: function() {
}
});
Run Code Online (Sandbox Code Playgroud)
应用程序/视图/ TheGrid.js
Ext.define('Test.view.TheGrid', {
extend: 'Ext.grid.Panel',
alias: 'widget.thegrid',
requires: ['Test.store.TheStore'],
store: …Run Code Online (Sandbox Code Playgroud) 有没有办法使用Ext.app.Controller control()方法,但传入DOM查询?我有一个包含标准链接的页面,并希望为它们添加一个单击处理程序,即使它们不是作为Ext Buttons创建的.
我试过了
Ext.define('app.controller.TabController', {
extend: 'Ext.app.Controller',
init: function() {
console.log("init");
this.control({
'a': {
click: this.changeTab
}
});
},
changeTab: function() {
alert("new tab!");
}
});
Run Code Online (Sandbox Code Playgroud)
但是点击链接不会触发警报.
有没有办法用this.control指定CSS选择器?或者它只适用于组件?
我在ExtJS 4中遇到了MVC模式的问题.至少,我认为我有.通过这个问题与多个人接触,并在Sencha论坛上多次发布,我现在转向更广泛的受众,希望得到一个灯泡或确认.
问题
您的应用程序可以打开许多不同的视图,其中一些视图本身就是迷你应用程序.另外,用户可能希望打开视图的多个并发副本.
此应用程序是单页客户端Javascript应用程序.
ExtJS 4 MVC模型希望您在Application类中定义所有控制器.然后在应用程序加载时初始化这些控制器.控制器跟踪视图,模型和存储.
多次初始化控制器A时,比如创建多个视图副本,最终会有两个引用相同数据存储的视图,并在功能上将重复事件发送到应用程序事件总线.
我通过向Component和Controller添加新的原型方法来重构我的应用程序,以允许a)子控制器(我的一些控制器变得非常庞大)和b)专门为它们使用的视图定义存储.模型仍然可以在控制器上定义,只是为了方便处理程序使用,如果你需要做一些事情,比如从服务器上获取记录.
题
我对MVC的理解会让我相信模型与View更直接相关,而不是Controller.我假设ExtJS 4决定将存储(我认为可以看作是更经典模型的包装器)附加到控制器,以鼓励重复使用加载的数据,并优化远离同一类的多个副本实例化.但是,在我看来,如果打算让用户可以使用许多视图实例,则无法执行此操作.根据我的想法,拥有许多实例是OO框架中的一个重要选项,因此我为什么要逆转趋势并在一些Ext基类上实现原型.(谢谢Ext.implement!).
有没有办法让一个视图的多个并发实例使用开箱即用的MVC类并使用提供的setter,getter等来加载不同的数据?
如何在工具栏中左,中,右三个区域?我知道我可以使用->触发所有后续物品的右对齐容器,但中心呢?
我正在开发一个相对较大的ExtJS MVC应用程序,大约有40个控制器,> 100个商店,> 100个模型等等.我没有遵循可能的MVC方式严格,所以我实现了一个懒惰的控制器初始化,它首先在需要时初始化控制器,因此存储.我也没有在任何控制器中注册任何视图,但这只是因为我不需要.
现在,表单(在Ext.window.Window中打开)大约需要1-2秒,直到它们出现,同时在一个相当小的项目中立即弹出相同的表单.所以形式(布局)不能成为我带来事件的问题.但我真的不知道最好的方法是什么,或者已经有一个很好的教程如何做到这一点.我想最好对它进行分析,看看整个管道需要多长时间(不仅仅是EventPipe本身).
活动结构:
大多数事件都是通过control()负责的控制器注册的.所有其他活动最多注册{ single: true }.窗口在重用时关闭并重新实例化.
我使用Javascript创建了一个小型数独游戏.现在我试图将该javascript代码转换为extjs(4.1.1a)代码.我已经浏览了文档以了解MVC架构,但对我来说,它似乎并不像我是初学者那么详细.
有人可以根据我的Sudoku应用程序解释Extjs的MVC架构吗?
我的数独应用程序代码的设计如下:

上述设计的描述如下:
container (blue) --> parent panel (grey) --> child panel (red)
" 父母小组 "是九个,每个" 父小组 "有九个" 儿童小组 ".
" 父面板 "和" 子面板 " 的HTML元素是使用for循环动态生成的.
我在" 儿童小组 " 上写过诸如KeyDown活动和活动等活动.click
我也写过一些函数
checkGroup() - >检查每个"父面板"是否有任何重复的数字 checkVertical() - >在"容器"的每个垂直行中检查重复的数字 checkHorizontal() - >检查每个水平线的"容器"用于重复的数字
app.js(主js文件)
Ext.application({
name: 'Game',
appFolder: 'app',
controllers: ['Sudoku']
});
Run Code Online (Sandbox Code Playgroud)
controller('app'文件夹 - >'controller'文件夹 - > Sudoku.js)
//By using 'controller', trying to call 'view' here …Run Code Online (Sandbox Code Playgroud) 在Extjs 4.1.1a中,如何保持tip text滑块始终可见?
目前,tip text只要用户拖动滑块的条,就可以看到它.
我搜索了文档,但找不到任何相关的概念.
如果没有记录或不可能,请解释我如何tip text手动创建.该tip text应沿着滑块的条移动,它不应该克服或隐藏的任何其它相邻部件.
这是我生成一个简单滑块的代码:
xtype:'slider',
cls: 'sliderStyle',
width: "80%",
id: 'slider',
value: 6,
minValue: 1,
maxValue: 12,
useTips: true,
tipText: function(thumb){
var months = ['','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
var value = Ext.String.format(months[thumb.value]);
return value;
},
Run Code Online (Sandbox Code Playgroud)
问题2:至少可以显示tip text悬浮在滑块上的时间吗?
PS:我在这里也问了同样的问题.
编辑1: 我也用两个相邻的按钮(<和>)移动滑块的搜索条.所以,必须注意的是,如果我用相邻的按钮移动搜索条,那么它tip text也应该移动.
编辑2:当在滑块或相邻按钮上悬停时,提示文本应该是可见的.
我在extjs4工作.我一直陷入困境,我必须在extjs4中创建一个超链接.我一直在搜索extjs4中创建超链接但我没有得到任何解决方案.实际上我必须放入箱子一个超链接,点击该链接后,我将在extjs4中显示另一个页面.实际上我也没有在extjs4中获得这个活动.如何在extjs4中使用超链接.我用这种方式......
{
xtype: 'panel',
html:'<a href="second.js">Second page</a>',
}
Run Code Online (Sandbox Code Playgroud)
请给我一些建议......
我按照MVC结构构建我的ExtJS 4应用程序.我想制作一个可扩展的网格MyGrid,它具有一些我可以重复使用的功能.因此,我猜,它应该有自己的控制器,它也是扩展的,因此功能是继承的.这怎么做得好?
在下面的代码中,我将说明如何使用MyExtendedGrid扩展控制器MyGrid.我意识到我正在覆盖MyGrid控制器中的init函数,因此它永远不会被调用.问题是通过从MyExtendedGrid init调用MyGrid中的"super" init来解决问题,还是合并控制对象?这是在MVC精神中这样做的正确方法吗?如果是这样,怎么样?
controller/MyGrid.js:
Ext.define('App.controller.MyGrid', {
extend: 'Ext.app.Controller',
refs: [
{
ref: 'myGridView',
selector: 'mygrid'
}
],
init: function() {
var me=this;
me.control({
'mygrid textfield[name=searchField]': {
change: function() {
var view = me.getMyGridView();
// Do something with view
}
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
controller/MyExtendedGrid.js:
Ext.define('App.controller.MyExtendedGrid', {
extend: 'App.controller.MyGrid',
views: [
'grids.MyExtendedGrid'],
refs: [
{
ref: 'myExtendedGridView',
selector: 'myextendedgrid'
}
],
init: function() {
var me=this;
me.control({
'myextendedgrid': {
// Some control code …Run Code Online (Sandbox Code Playgroud)