1

我编写了这段代码以在 Chrome 中将 WebSQL 与 JayData 一起使用:

 $data.Entity.extend("$org.types.Department",
 {
     Id: { type: "int", key: true, computed: true },
     Name: { type: "string", required: true }
 });

$data.EntityContext.extend("$org.types.OrgContext", {
    Department: { type: $data.EntitySet, elementType: $org.types.Department }
});

$org.context = new $org.types.OrgContext({ name: "WebSQL", databaseName:"Organization",
    dbCreation: $data.storageProviders.sqLite.DbCreationType.DropTableIfChanged
});

var department = new $org.types.Department({ Name: 'Department1' });
$org.context.Department.add(department);
$org.context.saveChanges();

但问题是,在 $org.context.Department.add(department); 行, “部门”未定义。我该怎么办?

4

2 回答 2

2

问题是: $data WebSQL 提供程序名称是: webSql,这样该示例就可以完美运行。当然,还需要 onReady 处理程序。

于 2012-06-06T15:09:41.530 回答
1

您必须使用上下文的 onReady 函数。当您尝试将新的部门实体添加到实体集时,上下文尚未初始化。使用是这样的:

$org.context.onReady(function(db){
    var department = new $org.types.Department({ Name: 'Department1' });
    db.Department.add(department);
    db.saveChanges(function(){
        ...
    });
});

建议始终使用回调函数,因为一切都是异步的,并且您不知道该进程在回调之外已准备好。

于 2012-06-06T12:06:16.877 回答