【问题标题】:Agility.js local storage functionAgility.js 本地存储功能
【发布时间】:2012-03-29 13:14:21
【问题描述】:

我有这个从谷歌找到的代码。它是用于保存数据的 agility.js RESTful 模型的适配器。现在 DELETE 函数可以完美运行,除了 _params.id === 0 会说

未捕获的类型错误:无法设置未定义的属性“id”

代码

$$.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();
};

【问题讨论】:

    标签: javascript html agility.js


    【解决方案1】:

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

    $$.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();
    };
    

    【讨论】:

      猜你喜欢
      • 2014-02-12
      • 1970-01-01
      • 2015-05-16
      • 2021-11-25
      • 2021-06-24
      • 2021-06-24
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      相关资源
      最近更新 更多