首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Agility.js局部存储函数

Agility.js局部存储函数
EN

Stack Overflow用户
提问于 2012-03-29 13:14:21
回答 1查看 303关注 0票数 0

我有这个代码,我已经从谷歌找到了。它是用于保存数据的agility.js restful模型的适配器。现在,DELETE函数工作得很好,除了在_params.id === 0上,它会说

未定义的TypeError:无法设置未定义的属性'id‘

密码

代码语言:javascript
复制
$$.adapter.localStorage = function(_params) {
    var key = (this._data.persist.baseUrl || '') + this._data.persist.collection;
    var value = localStorage[key];
    var items = (value && value.length > 0 ? JSON.parse(value) : []);
    switch (_params.type) {
    case 'GET':
        if (_params.id) { // normal get
            if (items[_params.id]) {
                _params.success(items[_params.id]);
            } else {
                _params.error();
            }
        } else { // gather call
            console.log(items);
            items = $.map(items, function(item) {
                return item;
            });
            console.log(items);
            _params.success(items);
        }
        break;
    case 'DELETE':
        _params.data = undefined; // continue into POST case
    case 'PUT':
        // continue into POST case
    case 'POST':
        if (!_params.id) {
            _params.id = items.length;
            _params.data.id = _params.id;
        }
        items[_params.id] = _params.data;
        //_params.success({id:_params.id});
        localStorage[key] = JSON.stringify(items);
        break;
    }
    _params.complete();
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-29 13:40:00

我找到了一个解决方案,它是在函数如何检测if (!_params.id)行的错误时找到的,它也为"0“返回false,所以正确的代码是

代码语言:javascript
复制
$$.adapter.localStorage = function(_params) {
    var key = (this._data.persist.baseUrl || '') + this._data.persist.collection;
    var value = localStorage[key];
    var items = (value && value.length > 0 ? JSON.parse(value) : []);
    switch (_params.type) {
    case 'GET':
        if (_params.id) { // normal get
            if (items[_params.id]) {
                _params.success(items[_params.id]);
            } else {
                _params.error();
            }
        } else { // gather call
            console.log(items);
            items = $.map(items, function(item) {
                return item;
            });
            _params.success(items);
        }
        break;
    case 'DELETE':
        _params.data = undefined; // continue into POST case
    case 'PUT':
        // continue into POST case
    case 'POST':
        if (!_params.id && _params.id !== 0) {
            _params.id = items.length;
            _params.data.id = _params.id;
        }
        items[_params.id] = _params.data;
        //_params.success({id:_params.id});
        localStorage[key] = JSON.stringify(items);
        break;
    }
    _params.complete();
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9926094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档