在适配器中指定自定义ID时,Appcelerator Titanium Alloy模型保存不会保留

时间:2016-08-29 13:11:19

标签: model save titanium appcelerator titanium-alloy

我的Alloy Backbone模型定义如下:

exports.definition = {
config: {
    columns: {
        "RequestCode" : "INTEGER",
        "Type" : "text",
        "Title": "text",
    },

    adapter: {
        type: "sql",
        collection_name: "EventDAO",
        idAttribute: "RequestCode"
    }
},

extendModel: function(Model) {
    _.extend(Model.prototype, {
        // extended functions and properties go here
        }
    });

    return Model;
},

extendCollection: function(Collection) {
    _.extend(Collection.prototype, {
        // extended functions and properties go here
    });

    return Collection;
}
};

问题是当我尝试更新集合的模型时。更新不会保留。我使用以下代码来检索和更新模型:

var collection = Alloy.createCollection("EventDAO");
collection.fetch();

var first_model = collection.at(0);

first_model.set({
  Title: "Modified title"
});

first_model.save();

下次当我尝试检索相同的模型时,Title属性不会更改。 如果删除行

,则不会发生这种情况
idAttribute: "RequestCode"

在模型的适配器定义中。

这是一个错误还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

当您调试Alloy收集问题时,值得查看sqlite数据库。

该文件将在iOS模拟器上(默认数据库名称): ~/Library/Developer/CoreSimulator/Devices/SIMULATORUID/data/Containers/Data/Application/APPID/Library/Private Documents/_alloy_.sql

使用http://sqlitebrowser.org/之类的内容浏览表格,刷新以查看应用更新。