【问题标题】:Unable to create datacontext object for IndexedDB provider using JayData Framework 1.3.1无法使用 JayData 框架 1.3.1 为 IndexedDB 提供程序创建数据上下文对象
【发布时间】:2013-08-22 01:35:11
【问题描述】:

我无法使用 Jaydata 框架 1.3.1 为 IndexedDb 提供程序创建 datacontext 对象,并得到“FailedProvider fallback failed!” $todo.context.onReady() 的消息。

为 IndexedDB 定义 dataprovider 的语法是什么?我在 Jaydata 文档中找到了以下代码,但它不起作用,因为“$data.types.storageProviders”API 没有在其中显示“indexedDb”类。

$news.context = new $news.Types.NewsContext({ name: "indexedDb", databaseName: "NewsReader", dbCreation: $data.types.storageProviders.indexedDb.DbCreationType.DropStoreIfOlderVersion, version: 1 });

<script src="Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="Scripts/jaydata.js" type="text/javascript"></script>

<script type="text/javascript">

    $(function () {

        $data.Entity.extend('$todo.Types.ToDoEntry', {
            Id: { type: 'int', key: true, computed: true },
            Value: { type: 'string' },
            CreatedAt: { type: 'datetime' },
            ModifiedAt: { type: 'datetime' },
            Done: { type: 'bool' }
        });

        $data.EntityContext.extend('$todo.Types.ToDoContext', {
            TodoEntries: { type: $data.EntitySet, elementType: $todo.Types.ToDoEntry }
        });

        $('#Button1').click(function (e) {
            var provider = "indexedDb";
            var options = { name: provider, databaseName: 'todo'};
            loadContext(options);

            return false;
        });

        $('#btnAdd').click(function () {
            var value = 'ravi';
            if (!value) return;
            var now = new Date();
            var entity = new $todo.Types.ToDoEntry({ Value: value, CreatedAt: now, ModifiedAt: now });

            try {
                $todo.context.TodoEntries.add(entity);
            }
            catch (Error) {

                alert(Error.Message);
            }
            $todo.context.saveChanges(updateView);
        });

        return false;
    });

    function loadContext(options) {

        $todo.context = new $todo.Types.ToDoContext(options);

        try {
            $todo.context.onReady({
                success: function () {
                    alert("Sucessfully");
                },
                error: function (error) {
                    alert("Failed" + error);
                    $todo.context = null;

                },
                notify: function (e) {

                    var result = e.value;

                    alert('Notify');
                }
            });
        }
        catch (Error) {
            alert(Error.Message);
        }
    }

</script>

【问题讨论】:

标签: jaydata


【解决方案1】:

当您使用从本地文件系统引用的库和 jaydata.js 旁边的 jaydataproviders folder(以及其中的提供程序)时,会发生这种情况。您将需要IndexedDbProvider.js 和 InMemory 之一。这些文件可以在已发布的包中找到。 Package of the latest release

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    相关资源
    最近更新 更多