无法读取undefined属性'push'。将数据添加到数组。

时间:2018-02-21 22:59:53

标签: javascript html arrays angularjs

我刚刚开始学习AngularJS,我想从表单传递信息然后传递给控制器​​并将信息输入到数组但收到此消息“无法读取属性'推送'未定义”。我不知道部分我做错了。我希望你们能帮我解决这个问题。提前谢谢你。

form.html

<!DOCTYPE html>
<html ng-app="formTraining">
  <head>
    <link rel="stylesheet" type="text/css" href="bootstrap.min.css" />
    <script type="text/javascript" src="angular.min.js"></script>
    <script type="text/javascript" src="formapp.js"></script>
        <link rel="stylesheet" href="style.css" />
  </head>

  <body ng-controller="UserController as usersCtrl">

    <h3>User Information</h3>
    <div ng-repeat="user in usersCtrl.mUsers">
        <p><ul>
            <li>{{user.name}}</li>
            <li>{{user.age}}</li>
            <li>{{user.occupation}}</li>
        </ul></p>
    </div>

    <div ng-controller="FormController as formCtrl">

        <form name="form" ng-submit="form.$valid && formCtrl.addUser(user)">
            <h5>Submit a Review</h5>

            <fieldset class="form-group">
                <input type="text" ng-model="UserCtrl.newUser.name"  class="form-control" placeholder="write your name.." title="Name">
            </fieldset>

            <fieldset class="form-group">
                <input type="text" ng-model="UserCtrl.newUser.age" class="form-control" placeholder="write you actual age.." title="Age">
            </fieldset>

            <fieldset class="form-group">
                <input type="text" ng-model="UserCtrl.newUser.occupation"  class="form-control" placeholder="write your job.." title="occupation">
            </fieldset>

            <fieldset class="form-group">
                <input type="submit" class="btn btn-primary pull-right" value="submit form">
            </fieldset>
        </form>
    </div>

  </body>

</html>

formapp.js

(function(){


    var app = angular.module("formTraining",[]);



    app.controller('UserController',function(){

        this.mUsers = users;
    });

    app.controller('FormController',function(){
        this.newUser = {};

        this.addUser = function(user){
            user.push(this.newUser);
            this.newUser = {};
        };
    });


    var users = [{
        name:"michael",
        age:"27",
        occupation:"business"
    },{
        name:"john",
        age:"25",
        occupation:"police"
    }];

})();

1 个答案:

答案 0 :(得分:1)

你不想要users

    app.controller('FormController',function(){
        this.newUser = {};

        this.addUser = function(user){
            users.push(this.newUser);
                ^

            this.newUser = {};
        };
    });