Javascript 向JSON动态添加数据

Javascript 向JSON动态添加数据,javascript,angularjs,json,Javascript,Angularjs,Json,所以我要做的是将图片的dataUri存储在本地存储器中。我只使用javascript和angularJS。此时没有jQuery 图片是通过type=“file”的输入上传的,ID为“input\u file\u 0”等等 我可以将id和dataUri存储在$scope.files变量中。因此,如果我说console.log($scope.files)我得到如下输出: $scope.files 但是设置关键点根本不起作用。获取src属性就可以了。但是有一个变量作为关键并不起作用。它总是用变量名替换

所以我要做的是将图片的dataUri存储在本地存储器中。我只使用javascript和angularJS。此时没有jQuery

图片是通过type=“file”的输入上传的,ID为“input\u file\u 0”等等

我可以将id和dataUri存储在$scope.files变量中。因此,如果我说
console.log($scope.files)我得到如下输出:

$scope.files 但是设置关键点根本不起作用。获取src属性就可以了。但是有一个变量作为关键并不起作用。它总是用变量名替换它



我自己解决了这个问题,尝试了一些我以前尝试过但现在突然奏效的方法。可能有东西已经存储在本地,我没有正确删除它

这次我没有使用push,因此我的代码如下所示:

controller.js
/*
*存储$scope值,以便在本地存储中进行更长时间的引用
*@returns{undefined}
*/
$scope.storeDataInLocalStorage=函数(){
if(typeof(localStorage)!=‘未定义’){
//存储文件数据
变量数据={};

对于(var i=0;i使用额外对象在for循环中添加项:

  var data = [];
  for (var i = 0; i <= $scope.files.length; i++) {
        var o = {};
        o[('file_input_' + i)] = $scope.files['file_input_'+i].src;
        data.push(o);
   }
  localStorage.setItem('files', JSON.stringify(data));
var数据=[];

对于(var i=0;i),Angular中有一个很好的本地存储库。您可以使用这个.Thx来存储键值对,也许这给了我使用angularJSWelcome更好更简单的方法。希望它能解决您的问题。Thx,在我将数据构造函数更改为[]之后,它就可以很好地工作了大括号。刚才看到,我现在有一个这样的对象:
localStorage.getItem('files')=[{'input\u file\u 0':“data…”,…}]
所以要获取数据,我必须做类似于
文件的事情。[0][input\u file\u 0]
我想是的,这更适合您的数据结构
/*
 * stores $scope-values for longer reference in the localStorage
 * @returns {undefined}
 */
    $scope.storeDataInLocalStorage = function () {
        if (typeof (localStorage) !== 'undefined') {
            //storing file data
            var data = {};
            for (var i = 0; i <= $scope.files.length; i++) {
                data.push({ 'file_input_'+i : $scope.files['file_input_'+i].src}) ;
            }
            localStorage.setItem('files', JSON.stringify(data));
        }
        /* No localstorage support */
        else {
            alert("Sorry. Localstorage is not supported");
        }
    };
localStorage.getItem('files') = 
{'input_file_0' : "data:image/png;base64,iVBORw0K...", 
 'input_file_1 : "data:image/png;base64,iVBORw0K..."}
/*
 * stores $scope-values for longer reference in the localStorage
 * @returns {undefined}
 */
    $scope.storeDataInLocalStorage = function () {
        if (typeof (localStorage) !== 'undefined') {
            //storing file data
            var data = {};
            for (var i = 0; i <= $scope.files.length; i++) {

                data['input_file_'+i]= $scope.data['input_file_'+i].src;

            }
            localStorage.setItem('files', JSON.stringify(data));
        }
        /* No localstorage support */
        else {
            alert("Sorry. Localstorage is not supported");
        }
    };
  var data = [];
  for (var i = 0; i <= $scope.files.length; i++) {
        var o = {};
        o[('file_input_' + i)] = $scope.files['file_input_'+i].src;
        data.push(o);
   }
  localStorage.setItem('files', JSON.stringify(data));