开发者问题收集

类型错误:无法读取 null 的属性“push”

2015-12-02
9607

我使用 Angularjs 和 Ionic 制作了一个 Todo 应用。 我想将一些字段保存到 localStorage,但当我单击“保存”时出现此错误。

我的代码是:

angular.module('myApp', ['ionic'])
    .controller('myAppCtrl', function($scope){

        $scope.uuid = function(){
            return Math.floor(( 1 + Math.random()) * 0x10000)
                .toString(16)
                .substring(1);
        };

        $scope.todo = {};
        $scope.todos = {};

        //Check The Localstorage If the Todos exists
        var todos = localStorage.getItem('todos');

        if(todos !== undefined){
            $scope.todos = JSON.parse(todos);
        }

        $scope.addTodo = function($event){
            activate_page("#create_edit");
        };

        $scope.goBack = function($event){
            activate_page("#mainpage");
        };

        $scope.saveTodo = function($event){

            $scope.todo.id = $scope.uuid();
            $scope.todos.push($scope.todo);
            $scope.todo = {};
            localStorage.setItem('todos', JSON.stringify($scope.todos)); //Save 
            activate_page("#mainpage");            
        };
    });

你能帮助我吗? 谢谢

2个回答

您需要像下面这样声明并初始化变量 $scope.todos,因为您要推送到 对象 而不是 数组

 $scope.todos = [];
Sajeetharan
2015-12-02

您正在尝试 推送 到 JSON 对象,而不是数组,其定义如下:

$scope.todos = [];

kbd
2015-12-02