2013-12-17 1 views
0

ExtJS에서 모델을 만든 다음 첫 번째 모델을 확장하는 다른 모델을 만들었습니다. 상점에서 두 번째 모델을 사용할 때 JavaScript 오류가 발생합니다.ExtJS 4에서 확장 모델을 사용하는 동안 오류가 발생했습니다.

TypeError: this.type.convert is not a function 
this.defaultValue = this.type.convert(this.defaultValue); 

- Model--

Ext.define('myModel.FirstModel', { 
    extend: 'Ext.data.Model', 
    fields: [ 

       { name: 'ID' }, 
       { name: 'Name' }, 
       { name: 'IsSelected', type: 'bool', defaultValue: false }, 
       { name: 'IsUpdated', type: 'bool', defaultValue: false }, 
       ] 
}); 

--Second model--

Ext.define('myModel.TreeModel', { 
    extend: 'myModel.FirstModel', 
    fields: [ 

       { name: 'leaf', type: 'bool', defaultValue: false }, 
       { name: 'expanded', type: 'bool', defaultValue: false } 
    ] 
}); 

--Store -

Ext.define('myStore.TreeStore', { 
    extend: 'Ext.data.TreeStore', 
    requires: ['myModel.TreeModel'], 
    model: 'myModel.TreeModel', 
    autoLoad: false, 
    proxy: { 
     type: 'memory' 
    } 
}); 

** 첫 번째 모델에서 확장하지 않고 첫 번째 모델의 모든 입력란을 두 번째 모델에 붙여 넣으면 복사하십시오. 원하는 결과를 얻고 있습니다. 오류의 원인은 무엇입니까? 모델을 확장하는 올바른 방법은 무엇입니까 **

답변

0

길을가는 길 ... 그렇다면 Ext! 4.1.0만이이 문제와 관련이있는 것으로 나타났습니다.

아니면 코드의 시작 부분에이 라인을 추가하여 문제를 해결할 수 있습니다

Ext.data.Types.AUTO.convert = function(v) {return v;}; 

아니면 모든 상속 된 필드를 확보하여 해결할 수 있습니다 중 하나 defaultValue 또는 convert 방법 :

Ext.define('myModel.FirstModel', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     { name: 'ID', defaultValue: null }, 
     { name: 'Name', defaultValue: null }, 
     { name: 'IsSelected', type: 'bool', defaultValue: false }, 
     { name: 'IsUpdated', type: 'bool', defaultValue: false }, 
    ] 
}); 

아, 그리고 당신이 당신의 질문에 문제가해야한다고 생각하지 않더라도, 내선의 당신의 정확한 버전을 제공하기 위해 주저하지 말고 ... 하나는 알고 결코!