从ExtJS 4迁移到Ext JS 5

时间:2015-03-10 13:17:57

标签: javascript json extjs extjs4

我是ExtJS的新手。 我在从ExtJS 4转到ExtJS 5时遇到了问题。

使用ExtJS 4时,evrything工作正常。 CRUD工作正常。 但是当我切换到ExtJS 5时,特别是当我从

更改index.php时
<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>

<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中的

{id: "Books.model.Books-1", title: "test", author: "test", price: "20", qauantity: "20"}

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

2 个答案:

答案 0 :(得分:1)

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

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

  

创建记录并且没有给出“id”时,将生成一个记录。这是由Model的“标识符”配置(来自Sencha Touch和以前在Ext JS 4中的“idgen”)处理的。它在记录上(使用“getId”访问)以及“data”对象中的“id”作为“idProperty”。在Ext JS 4中,id通常会被复制到internalId。这已不再是这种情况。 internalId是一个单独生成的值,在所有记录中都是唯一的,不应更改。但是,id可能会被更改。

答案 1 :(得分:1)

就像Nikolay发布的那样,ExtJs 5.X中的模型已被更改 Model实例应始终具有一个标识字段,即&#34; id&#34;默认情况下,如果您没有为该ID提供值,那么Ext将为您生成它。要将id分配给另一个字段,您必须定义idProperty配置并为其指定字段名称。

这是“模型”源代码中的摘要 -

  

&#34; id&#34;字段和idProperty * *模型定义始终具有标识字段,它应为每个

生成唯一键*      

实例。默认情况下,名为&#34; id&#34;将用*创建   &#34; id&#34;的{@link Ext.data.Field#mapping mapping}。这是因为   模型定义中提供的默认* {@link #idProperty}。   * *要更改哪个字段是标识字段,请使用{@link #idProperty}配置。

这是初始化过程中的作用 -

// 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