2016-09-23 87 views
0

我控制器

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控制台返回未定义。

enter image description here

回答

1

有一个对象没有长度属性。 使用Object.keys长度,而不是

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

你应该通过调用一个函数ng-init首先分配初始值模型。在这个函数中首先设置所有模型的初始值,其他明智的你会得到这个未定义的错误

0

你想获得一个对象的长度。对象没有长度属性。但是,您可以使用Object.key()获取对象长度。在这里查看详情。

get-js-object-length

0

你的输入类型为"email"

该值将not be assigned,直到您通过一个有效的电子邮件。

仅对电子邮件字段进行类型电子邮件,让其余为文本。

要获取长度:

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

$scope.user是object.Objects没有长度propertly。

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

0

以下是您正在努力实现的工作fiddle

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