gpt4 book ai didi

model - 无法使用 Titanium Appcelerator 中的合金更新模型

转载 作者:行者123 更新时间:2023-12-02 04:42:34 24 4
gpt4 key购买 nike

我正在尝试使用合金更新 Titanium 集合中的模型。

此代码无效:

var contactos = Alloy.Collections.instance('Contact');

var contacto = contactos.get({id: 3});
// Output: {id:3, name:'Juan 3', marcado: 1}
Ti.API.debug('get: ' + JSON.stringify(contacto));

contacto.set({marcado: 0});
// Output: {id:3, name:'Juan 3', marcado: 0}
Ti.API.debug('set: ' + JSON.stringify(contacto));

contacto.save();
contactos.fetch();

// Output: [{id:3, name:'Juan 3', marcado: 1},{...},{...}]
Ti.API.debug('despues de save: ' + JSON.stringify( JSON.stringify( contactos ) ));

虽然这是有效的:

var contactos = Alloy.Collections.instance('Contact');

var contacto1 = Alloy.createModel('Contact');
// Output: {id:null, name:'', marcado: 0}
Ti.API.debug('createModel: ' + JSON.stringify(contacto1));

var contacto2 = contactos.get({id: 3});
// Output: {id:3, name:'Juan 3', marcado: 1}
Ti.API.debug('get: ' + JSON.stringify(contacto2));

contacto1.set( contacto2 );
contacto1.set({marcado: 0});
// Output: {id:3, name:'Juan 3', marcado: 0}
Ti.API.debug('set: ' + JSON.stringify(contacto1));

// elimino el contacto 2
contacto2.destroy();

contacto1.save();
contactos.fetch();

// Output (last object): [{...},{...},{...},{...},{id:3, name:'Juan 3', marcado: 0}]
Ti.API.debug('despues de save: ' + JSON.stringify( JSON.stringify( contactos ) ));

但是:- 第一个选项可以很好地保存新模型(集合中不存在)。

更新模型应该是一件很容易的事,但我做不到。

对可能出现的问题有什么想法吗?

谢谢。

J.巴勃罗。

最佳答案

我遇到了同样的问题,我是这样解决的:定义模型时,必须显式声明主键,如下所示:

exports.definition = {
config: {
columns: {
"id": "INTEGER PRIMARY KEY",
"name": "TEXT",
"marcado": "INTEGER"
},
adapter: {
type: "sql",
idAttribute: "id"
}
},
extendModel: function(Model) {
_.extend(Model.prototype, {
idAttribute: "id",
...
return Model;
}
};

仅声明 idAttribute 是不够的。

关于model - 无法使用 Titanium Appcelerator 中的合金更新模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20517418/

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