2015-10-06 55 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