Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解析Backbonejs中包含子模型的模型数据_Javascript_Backbone.js_Backbone Model - Fatal编程技术网

Javascript 解析Backbonejs中包含子模型的模型数据

Javascript 解析Backbonejs中包含子模型的模型数据,javascript,backbone.js,backbone-model,Javascript,Backbone.js,Backbone Model,我正在使用Backbonejs构建一个仪表板内车辆应用程序。我的一些模型使用HTTP保存回服务器,其他模型保存到本地文件系统,只有通过框架的读/写功能才能访问 我的问题是关于那些我一直坚持到文件系统的问题,尽管它可能适用于任何一种情况 您可能已经猜到,我的播放器模型处理音频播放,它包含一个播放列表对象。当应用程序关闭时,我会将当前播放器状态保存到文件系统中,以便下次启动时可以恢复 save: function () { sdk.write_json_file('player.json',

我正在使用Backbonejs构建一个仪表板内车辆应用程序。我的一些模型使用HTTP保存回服务器,其他模型保存到本地文件系统,只有通过框架的读/写功能才能访问

我的问题是关于那些我一直坚持到文件系统的问题,尽管它可能适用于任何一种情况

您可能已经猜到,我的播放器模型处理音频播放,它包含一个播放列表对象。当应用程序关闭时,我会将当前播放器状态保存到文件系统中,以便下次启动时可以恢复

save: function () {
    sdk.write_json_file('player.json', this.toJSON());
}
我看到toJSON也会自动为包含的模型调用toJSON,从而生成类似以下内容的存储JSON:

{
    'playing':true,
    'playlist_i': 2
    'playlist':[
        {
            'stream_url': 'http://my.stream.com/blah',
            'title': 'Title goes here',
            'artist': 'Artist goes here',
            ...& other metadata
        },
        ...and so on
    ]
}
因此,我有一个重写的fetch函数:

fetch: function () {
    var p = sdk.read_json_file('player.js');
    this.set(this.parse(p), {});
    return this;
}
现在的问题是,一旦调用fetch,就会触发重置事件,并且我的播放器视图会尝试更新。播放器视图假定播放器模型包含播放列表对象。从技术上讲确实如此,但此时播放列表只是一个JavaScript哈希,因为它还没有被解析为播放列表实例

我想知道我将在模型中根据从文件读取返回的数据在哪里创建playlist实例


免责声明:Backbonejs noob

我没有足够的上下文来尝试非常具体,但是无论如何,如果您想为主干编写另一个“适配器”,您可能应该制作自己的Backbone.sync适配器,并覆盖相关型号的sync方法以使用自己的sync适配器

save/fetch方法调用Backbone.sync适配器,但它们也确保数据得到了正确的预处理/后处理(通过调用parse,这允许您做的不仅仅是从传递的json或类似文件中设置特定成员)

有用于localStorage、indexedDB的Backbone.sync适配器,可能还有一些用于文件系统API的适配器。谷歌的第一件事是:

我已经成功地为localStorage和indexedDB使用了适配器,但还没有尝试我自己上面链接的适配器