如何在backbone-sync内填充backbone集合,以使结果集合可以在backbone sync之外使用。
下面是一个示例:
mycollection = new MyCollection();
mycollection.fetch();
// after a few seconds ... it triggers the success function
mycollection.length; //prints 0 :S这是我的backbone同步的代码:
define(["backbone"], function (bb) {
bb.sync = function (method, model, options) {
var sql = "";
if (!model.tabla) {
if (options && options.error)
options.error("No property 'tabla' for model");
}
switch (method) {
case 'create':
break;
case 'update':
break;
case 'delete':
break;
case 'read':
sql = "select * from " + model.tabla;
break;
}
console.log("MODELO", model);
if (app.db == undefined) return;
app.db.transaction(function (tx) {
tx.executeSql(sql, [], function (tx, res) {
var resp = [];
for (var i = 0; i < res.rows.length; i++) {
resp.push(res.rows.item(i));
}
if (options && options.success) options.success(resp);
}
);
}, function (e) {
console.log(e);
if (options && options.error) options.error(e);
});
}
}
);我的问题是输入模型没有使用结果数组进行修改。我该怎么做呢?
发布于 2014-01-29 05:59:09
由于您使用的是异步调用,需要在回调成功后才能采集新的数据。
您可以使用
mycollection.fetch().then(function() {
console.log(mycollection.length);
});或
mycollection.fetch({
success: function() {
console.log(mycollection.length);
}
});甚至是
mycollection.on("fetch-complete", function() {
console.log(mycollection.length);
});
mycollection.fetch({
success: function(collection) {
collection.trigger("fetch-complete");
}
});https://stackoverflow.com/questions/21409886
复制相似问题