2015-10-06 33 views
2

我本地存儲了一個json文件,即時通訊工作,但我無法保存它,失去了堅持。此代碼是在我的網絡控制器(angularjs)我怎樣才能保存與JavaScript或angularjs json文件?

$http.get("users.json") 
      .then(function(res) { 
       $scope.users = res.data; 
      }); 

     $scope.addUser = function() { 
      $scope.users.push({ 
       name: $scope.user 
      }); 

      $scope.user = "";    
     } 

     $scope.removeUser = function() { 
      $scope.users.pop({ 
       name: $scope.user 
      }); 

      $scope.user = "";    
     } 

我知道另一種方式是本地存儲,但我無法使用它,因爲我不能在我的HTML代碼中列出的每一個對象(它說我不能推或彈出一個未定義的對象)。

那麼,我該怎麼做呢?

Thanxs!

+0

無法從瀏覽器保存到文件。 localStorage存儲爲字符串,所以不清楚你試圖做什麼來推送它。您可以很容易地將數據串入數據,並在工作時解析回數組/對象 – charlietfl

+1

JSON.stringify(dataObject)是您的朋友。然後使用JSON.parse(dataAsString)將其恢復。 – primavera133

回答

0

感謝大家喲,終於我使用去JSON文件,解析和字符串化將數據保存到我的localStorage!

$scope.addUser = function() { 
    var jsonData = []; 

    if (localStorage.getItem("users")) { 
     jsonData = JSON.parse(localStorage.getItem("users")); 
    } 

    jsonData.push ({ 
     name: $scope.user 
    }); 

    localStorage.setItem("users",JSON.stringify(jsonData)); 
    $scope.users = jsonData; 
    $scope.user = "";    
} 

$scope.removeUser = function(user) { 

    if (localStorage.getItem("users")) { 
     jsonData = JSON.parse(localStorage.getItem("users")); 
    } 

    for (var index in jsonData) { 
     if (jsonData[index].name === user.name) { 
      jsonData.splice(index,1); 
     } 
    } 

    localStorage.setItem("users",JSON.stringify(jsonData)); 
    $scope.users = jsonData; 
    $scope.user = "";    
} 
1

我想,你需要在調用http請求之前初始化你的用戶變量。

$scope.users = []; 
$http.get("users.json") 
     .then(function(res) { 
      $scope.users = res.data; 
     }); 

希望它能解決未定義的對象問題。

+0

不需要...正在重新分配回調,無論如何破壞原始參考 – charlietfl

+0

右@charlietfl,我試圖解釋'undefiened object'錯誤,他可能會嘗試在http請求完成之前添加用戶和removeUser動作。 – sushilprj

0

我知道另一種方式是本地存儲,但我無法使用它 因爲我不能在我的HTML代碼中列出的每一個對象(它說我可以在一個undefiened對象不 PUSH或POP)。

如果通過檢查數據是否可用,然後添加數據來正確存儲數據,則可以使用它。其他選項是如果user數據將用於不同的頁面或控制器,則可以使用$rootScope

在下面的代碼中,您尚未定義引發錯誤的$scope.users

// $scope.users = []; // Uncomment code if variable is not defined 
// $scope.user = ''; // Uncomment code if variable is not defined 
$http.get("users.json") 
    .then(function(res) { 
     $scope.users = res.data; // Throws error if not defined earlier 
}); 

$scope.addUser = function() { 
    $scope.users.push({ 
    name: $scope.user // Here $scope.user throws error if not defined earlier 
    }); 

    $scope.user = ""; 
}; 
+0

,如果你使用本地存儲角度確保你可以在你的測試中使用像https://github.com/grevory/angular-local-storage – primavera133