我最近将EXT JS的版本更新为5,并且覆盖doSort功能不再有效.有人在想怎么办?
覆盖范围:
{
text: 'Custom',
sortable : true,
dataIndex: 'customsort',
doSort: function(state) {
var ds = this.up('grid').getStore();
var field = this.getSortParam();
ds.sort({
property: field,
direction: state,
sorterFn: function(v1, v2){
v1 = v1.get(field);
v2 = v2.get(field);
return v1.length > v2.length ? 1 : (v1.length < v2.length ? -1 : 0);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
编辑1: 我只是尝试@tomgranerod的解决方案,但me.sortState始终是'undefined'.所以我这样做来更新我的变量:
sort: function () {
var me = this,
grid = me.up('tablepanel'),
store = grid.store;
me.sortState = me.sortState === 'ASC' ? 'DESC' : 'ASC';
Ext.suspendLayouts(); …Run Code Online (Sandbox Code Playgroud) 我很难理解ExtJS中不同类型的数据绑定,我无法弄清楚这一点:
在两个模型上定义关联时,"hasMany"和"field.reference"之间有什么区别?
我什么时候应该使用"hasMany",什么时候"参考"更好?
例如,如果我想为一个用户定义多个电子邮件地址,那么最佳做法是什么,以便我可以在其他地方使用电子邮件模型?
我知道我有3个问题,但这些问题似乎属于一个问题.
谢谢!
我是Extjs的新手,在浏览了Extjs MVC模式的一些教程和博客后,我不清楚如何在extjs平台上构建复杂的应用程序(例如10 - 15页面导航).
在sencha论坛中,建议所有控制器都需要在app.js中预先定义(因为与加载DOM的UI相比,加载控制器之前的性能不会受到影响.请注意,这是由sencha论坛提到的经理).
按照上述方法,我几乎没有问题:
控制器什么时候实例化?它们都是在应用程序加载时加载和实例化的,并且在应用程序的生命周期内一直监听它们中定义的事件吗?
在控制器类中定义Models [],Stores []和Views []意味着什么?什么时候加载并实例化?
页面导航如何与控制器一起使用?如果导航到新页面只是转换为getParentContainer.remove(componentX)和getParentContainer.add(componentY),那么控制器的目的仅仅是处理事件的文件?
控制器是否有任何范围(实例化>销毁)?如果不是,如何创建和销毁多个实例,以便我的操作不会被错误的实例监听(我看过一些提到控制器的博客大多是单身)?
有人可以对此有所了解吗?任何示例/插图都会有很大帮助.
谢谢
我是ExtJs的新手,想要将使用Sencha CMD创建的ExtJs 5应用程序集成到WebAPI应用程序中!
我进行了BUILD模式的集成,但没有进行开发模式.
关于这篇文章 ,整合步骤如下所示!
步骤1.创建路径:C:\ VCProject\SVCodeCampWeb\WebAPI
步骤2.在步骤1的目录中创建名为"API_NAME"的WebAPI项目.
步骤3.将ExtJS 5框架(ext-5.0.0)移动到步骤1的目录.
步骤4.使用sencha cmd生成extjs应用程序:
C:\VCProject\SVCodeCampWeb\WebAPI\ext-5.0.0>sencha generate app MyApp
C:\VCProject\SVCodeCampWeb\WebAPI\API_NAME\API_NAME\CMDBUG1
步骤5.通过Solution Explorer将ext应用程序包含在Web Api中.
步骤6.使用sencha cmd构建应用程序,如下所示:
C:\Users\albert\Documents\Visual Studio 2013\Projects\BMSIA\BMSIA.Web\BMSJS>sencha app build
作品!!!这些是我在WebAPI for BUILD模式的_Layout.chtml中包含的文件并且有效!
<script src="~/CMDBUG1/build/production/MyApp/app.js"></script>
<link href="~/CMDBUG1/build/production/MyApp/resources/MyApp-all.css" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)
错误部分!!!
对于开发模式,我包括以下文件:
< link href="~/CMDBUG1/build/production/MyApp/resources/MyApp-all.css" rel="stylesheet" />
< script src="~/CMDBUG1/ext/ext-all.js"></script>
< script src="~/CMDBUG1/app.js"></script>
Run Code Online (Sandbox Code Playgroud)
但它抛出了这个错误:
TypeError: Ext.application is not a function
Run Code Online (Sandbox Code Playgroud)
如果您需要更多详细信息,请告诉我们!
任何帮助将不胜感激!
我从另一个堆栈溢出帖子(感谢igor)得到了这个很棒的小提琴https://fiddle.sencha.com/#fiddle/h5i.但我有一个问题:如果我选择extjs版本5.1,这是我在我的应用程序中使用的版本,代码不起作用.问题是,当我点击一个月或一年时,日历就会关闭(您可以通过将版本设置为5.1并再次运行小提琴来尝试该行为).我试图自定义部分代码,但没有改变:s.
任何人都有任何想法为什么这不适用于extjs 5.1,或者我怎么能解决这个问题?
提前致谢 :) !
我正在迁移ext js 4 to ext js 5.1.我的extjs 4.2.1中的代码在升级到extjs 5.1之后会出现控制台错误.它在ExtJs 4.2.1中运行良好,不知道它为什么会出错,说
未捕获错误:[Ext.create]无法识别的类名/别名:MyApp.store.LibraryFolderTreeStore
Ext.define('MyApp.view.library.LibraryTreeView', {
extend : 'Ext.tree.Panel',
alias : 'widget.librarytreeview',
requires: [
'MyApp.store.LibraryFolderTreeStore'
],
store : Ext.create("MyApp.store.LibraryFolderTreeStore") // getting error on this line
....
});
Run Code Online (Sandbox Code Playgroud) 在 extjs 应用程序中,我有一个读取 json 文件的树面板,在树面板中我有一个执行操作的复选框,另外我将选中的元素保存在选项卡面板的网格面板中...
\n\n我想删除之前使用复选框的 checkchange 事件保存的商店的任何元素...
\n\n我有这个代码
\n\n风景:
\n\nExt.define(\'app.view.ViewTablaContenido\', {\nextend: \'Ext.window.Window\',\nid: \'viewTablaContenido\',\nshadow: false, \nalias: \'widget.tablaContenido\', \n\ninitComponent: function() {\n .......\n\n var tree = Ext.create(\'Ext.tree.Panel\', {\n title: \'\',\n id: "arbolTabla", \n width: anchoTOC,\n height: altoTOC, \n reserveScrollbar: true,\n loadMask: true,\n useArrows: true,\n rootVisible: false,\n store: \'capa\',\n allowDeselect : true,\n border : true,\n animate: true,\n columns: [{\n xtype: \'treecolumn\',\n text: \'Capa\',\n flex: 5,\n sortable: true,\n dataIndex: \'titulo\'\n },{\n text: \'Metadato\',\n flex: 2,\n dataIndex: \'metadato\',\n renderer: addUrl\n }]\n …Run Code Online (Sandbox Code Playgroud) 我们有一个用 Sencha cmd 5.0.1.231 构建的 ExtJS 5.01 应用程序。
我们面临的问题是浏览器似乎缓存了我们应用程序的旧版本。在为我们的应用程序提供服务时查看 chrome 上的网络流量,我可以看到 app.js、app.css 文件都附加了 ?_dc={timestamp} 。现在,这告诉我每次发布我的应用程序的新版本(更新此时间戳)时,浏览器都应该获得一个新版本。但似乎有时仍然提供旧版本。
还有什么我需要做的胸围缓存吗?
谢谢
使用extjs中的条件删除多个记录的最佳方法是什么?
例如:
var store = Ext.create('Ext.data.Store', {
data: [
{name: 'Ed', age: 21},
{name: 'Tommy', age: 15},
{name: 'Aaron', age: 18},
{name: 'John', age: 22}
]
});
Run Code Online (Sandbox Code Playgroud)
我想删除'年龄'小于20的记录(在这种情况下,'Tommy'和'Aaron').这个问题可能与如何找到多个条件的多个记录相同.
Ext JS提供了fileuploadfield与按钮捆绑在一起的按钮,以浏览本地文件。我只需要使用从本地选择的文件就上传文件,而不是使用提交按钮来触发发布过程。选择文件后找不到触发的事件。
ps实际上,我使用的版本是Ext JS 6,但我认为基于以前版本的解决方案也可以完成。
extjs5 ×10
extjs ×9
javascript ×6
extjs4 ×4
associations ×1
caching ×1
difference ×1
extjs6 ×1
field ×1
reference ×1
sencha-cmd5 ×1