带有属性的$ scope表示未定义

时间:2016-09-23 06:49:37

标签: javascript angularjs angularjs-scope

我的控制器

App.controller('Ctrl', ['$scope', function ($scope) {
     $scope.user = {};
    $scope.view = function () {
                console.log($scope.user);
                console.log($scope.user.length);
    }]);

我的HTML

<input type="text" ng-model="user.lastname" />
<input type="email" ng-model="user.email" />
<input type="text" ng-model="user.address" />
<input type="email" ng-model="user.id" />
<input type="text" ng-model="user.city" />
<input type="email" ng-model="user.country" /> ---> This will be a select

没有字段是强制性的,我必须根据用户输入执行搜索功能。我必须验证用户必须提供至少一个数据的一件事。当我把控制台放在上面时,我可以在第一个看到值,而.length控制台返回undefined。

enter image description here

6 个答案:

答案 0 :(得分:1)

对象没有长度属性。 请改用Object.keys长度

Object.keys($scope.user).length;

答案 1 :(得分:0)

您必须首先通过调用setToLibrary()函数为模型分配初始值。在这个函数中,首先为所有模型设置初始值,否则你将得到这个未定义的错误

答案 2 :(得分:0)

您正在尝试获取对象的长度。对象没有长度属性。但是,您可以使用Object.key()获取对象长度。在这里检查细节。

get-js-object-length

答案 3 :(得分:0)

您的输入类型为"email"

在您传递有效的电子邮件之前,该值将为not be assigned

  

仅为电子邮件字段制作类型电子邮件,让其余为文本。

获得长度:

Object.keys($scope.user).length;

答案 4 :(得分:0)

$scope.user是一个object.Objects没有属性。

如果要获取对象的属性数,则必须使用Object.keys(object).length函数来获取对象属性的长度。

答案 5 :(得分:0)

这是你想要实现的工作fiddle

  

此外,您无法直接调用对象上的.length。如果你想   要获取对象中的属性数,请尝试此SO Question