首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ExtJS 4迁移到ExtJS 5

从ExtJS 4迁移到ExtJS 5
EN

Stack Overflow用户
提问于 2015-03-10 21:17:57
回答 2查看 623关注 0票数 1

我是ExtJS的新手。从ExtJS 4迁移到ExtJS 5时遇到问题。

当使用ExtJS 4时,一切都运行得很好。CRUD正常工作。但是当我切换到ExtJS 5时,特别是当我在index.php中从

代码语言:javascript
复制
<link rel="stylesheet" type="text/css" 
    href="http://cdn.sencha.com/ext/gpl/4.2.0/resources/css/ext-all.css">
<script type="text/javascript" 
    src="http://cdn.sencha.com/ext/gpl/4.2.0/ext-all.js"></script>

代码语言:javascript
复制
<link rel="stylesheet" type="text/css" 
    href="ExtJS5/packages/ext-theme-classic/build/resources/ext-theme-classic-all.css">
  <script type="text/javascript" 
    src="ExtJS5/build/ext-all.js"></script>
  <link rel="stylesheet" type="text/css" 
    href="ExtJS5/packages/ext-theme-classic/build/ext-theme-classic.js">

创建新的停止工作。

在ExtJS 4中,JSON如下所示

{id: "",title: "test", author: "test", price: "20", quantity: "20"}

在ExtJS 5中

代码语言:javascript
复制
{id: "Books.model.Books-1", title: "test", author: "test", price: "20", qauantity: "20"}

为什么它开始添加Books.model.Books-1到id,而我所做的只是更改为ExtJS 5

EN

回答 2

Stack Overflow用户

发布于 2015-03-10 23:02:53

请查看此升级指南http://docs.sencha.com/extjs/5.0/whats_new/5.0/extjs_upgrade_guide.html#Models

如果值不存在,则自动生成In ExtJS5 id字段。以下是这篇文章的文本:

当创建一条记录并且没有给出“id”时,将会生成一个。这是由Model的“identifier”配置(来自Sencha Touch和ExtJS4中以前的“idgen”)处理的。它作为“id”放在记录上(使用“getId”访问),也作为“idProperty”放在“data”对象中。在ExtJS4中,id通常会被复制到internalId。现在已经不是这样了。internalId是一个单独生成的值,它在所有记录中都是唯一的,不应更改。但是,id可能会更改。

票数 1
EN

Stack Overflow用户

发布于 2015-03-10 23:09:50

就像Nikolay发布的那样,模型在ExtJs5.X中已经改变了。模型实例应该总是有一个标识字段,默认情况下是" id“,如果你没有为这个id提供一个值,那么Ext会为你生成它。要将id分配给另一个字段,您必须定义idProperty配置并为其分配字段名称。

以下是模型源代码中的解释:

"id“字段和idProperty **模型定义总是有一个标识字段,应该为每个字段产生一个唯一的键*

实例。默认情况下,会创建一个名为"id“的字段,其中* {@link Ext.data.Field#mapping映射}为"id”。这是因为模型定义中提供了默认的* {@link #idProperty}。**要更改哪个字段是标识字段,请使用{@link #idProperty}配置。

下面是它在初始化过程中所做的事情-

代码语言:javascript
复制
// Must do this after running the initializeFn due to converters on idField
        if (!(me.id = id = data[idProperty]) && id !== 0) {
            if (session) {
                identifier = session.getIdentifier(cls);
                id = identifier.generate();
            } else if (modelIdentifier === identifier) {
                id = internalId;
            } else {
                id = identifier.generate();
            }

            data[idProperty] = me.id = id;
            me.phantom = true;
        }

还要检查源代码-- http://docs.sencha.com/extjs/5.0/5.0.1-apidocs/source/Model2.html#Ext-data-Model

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28964806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档