gpt4 book ai didi

model - 如何在 Sencha 触摸模型中创建构造函数?

转载 作者:行者123 更新时间:2023-12-01 11:02:02 26 4
gpt4 key购买 nike

我是 sencha touch 和 javascipt 的新手,我正在尝试在我的 sencha touch 模型中初始化一个值函数中的其他值。在 Java 中,我这样做:

private int a,b,c;

public className(int a, int b){
this.a = a;
this.b = b;
this.c = b - a;
}

在 sencha 中我尝试这样做但是我有一个“Uncaught TypeError: Cannot call method 'hasOwnProperty' of undefined”。这是我的模型:

Ext.define('MyApp.className', {
extend: 'Ext.data.Model',

config: {

fields: [
{ name: 'a', type: 'int' },
{ name: 'b', type: 'int' },
{ name: 'c', type: 'int'},
]

},

constructor: function(config) {

var a = this.get('a');
var b = this.get('b');
this.set('c', b - a);

},

});

下面是我如何创建我的实例:

var instance = Ext.create('MyApp.className', {
a : '5',
b : '4'
});

我尝试将我的方法名称从 contructor 替换为 init,现在可以了。但我不知道这样做是否正确,因为 init 函数不是构造函数……有什么区别?如何编写构造函数?

提前致谢!

最佳答案

你实际上可以扩展构造函数,但是构造函数的参数是不同的,而且你没有调用父类的构造函数,这很重要,试试下面的代码

Ext.define('MyApp.className', {
extend: 'Ext.data.Model',

config: {
fields: [
{ name: 'a', type: 'int' },
{ name: 'b', type: 'int' },
{ name: 'c', type: 'int'},
]
},

constructor: function(data, id, raw, convertedData) { // number of arguments is different
// call parent first then you can do further processing
this.callParent();

var a = this.get('a');
var b = this.get('b');
this.set('c', b - a);
},
});

关于model - 如何在 Sencha 触摸模型中创建构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9823346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com