2012-03-29 13 views
0

私はこのコードをgoogleから見つけました。それは敏捷性のためのアダプターです。データを保存するための安らかなモデルです。今DELETE機能は、私はそれが機能も返す行if (!_params.id)でエラーを検出する方法でだが、解決策を見つけ、それがコードAgility.jsローカルストレージ機能

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

答えて

0

Uncaught TypeError: Cannot set property 'id' of undefined

を言うだろう_params.id === 0を除いて完璧に動作します"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(); 
}; 
です。
関連する問題