【问题标题】:Cannot read property 'push' of undefined. adding data to an array.无法读取未定义的属性“推送”。将数据添加到数组。
【发布时间】:2018-08-01 16:29:35
【问题描述】:

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

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"
    }];

})();

【问题讨论】:

  • user 确实是未定义的。当然,您将其传递给this.addUser,但您从未真正将其设置为变量。你的意思可能是users。

标签: javascript html arrays angularjs


【解决方案1】:

你不想users

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

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

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

【讨论】:

  • 感谢您的帮助先生。想要更多问题.. 是否有任何适当的方法来操纵变量而不是直接访问?
  • @khoi 如果您想获得新问题的最多答案,也许可以在 SO 上发布另一个问题。
猜你喜欢
  • 1970-01-01
  • 2017-10-16
  • 2015-10-09
  • 2014-09-10
  • 2021-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多