1

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

为 IndexedDB 定义数据提供者的语法是什么?我在 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>
4

1 回答 1

0

当您使用从本地文件系统引用的库jaydataproviders folderjaydata.js. 您将需要IndexedDbProvider.js和 InMemory 之一。这些文件可以在发布的包中找到。最新版本的包

于 2013-08-23T07:43:11.483 回答