Angularjs无法读取undefined的属性firstname

时间:2015-08-03 06:26:54

标签: angularjs forms validation properties undefined

我有一个表格,如

HTML:

<form ng-submit="log(user)">
   <input type="text" ng-model="user.firstname">

<input type="text" ng-model="user.lastname

</form>

角:

.controller ('', function ($scope){

    $scope.log = function (user){

        console.log (user.firstname)
     }
})

这之前有效,但现在它抛出无法读取属性user.firstname

请帮帮我。谢谢

4 个答案:

答案 0 :(得分:1)

AngualarJs富含双向数据绑定。您不需要在函数日志中传递范围对象用户。它在控制器中始终具有更新的值。只需将用户初始化为范围对象并尝试代码

在html中:

<form ng-submit="log()">
   <input type="text" ng-model="user.firstname" />
   <input type="text" ng-model="user.lastname" />
</form>

在Js

.controller ('', function ($scope){
    $scope.user = {};    // Declare here
    $scope.log = function (){
        console.log ($scope.user.firstname);
     }
})

答案 1 :(得分:0)

如果用户参数未定义,则无法访问未定义值的名字,您可以尝试使用以下代码段来解决问题。

    .controller ('', function ($scope){    
            $scope.log = function (user){
                   if(user){ //Strict Check:  toString.call(user) == "[object Object]"
                     console.log (user.firstname)
                   }
             }
     })

答案 2 :(得分:0)

这是完整的工作示例,与您的有点类似。

<div ng-app="myApp" ng-controller="myCtrl">
First Name: <input type="text" ng-model="firstName"><br>
Last Name: <input type="text" ng-model="lastName"><br>
<br>
Full Name: {{firstName + " " + lastName}}
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.firstName = "John";
    $scope.lastName = "Doe";
});
</script>

请试一试。

由于 阿米特

答案 3 :(得分:0)

删除以下代码

  ng-submit="log(user)"

并删除按钮类型提交

并添加以下行

<input type="button" ng-click="log()"/>

你的js文件

$scope.log=function(){
   console.log($scope.firstname);
   console.log($scope.lastname);
}