当模型中的点时,角度验证不起作用

时间:2016-01-27 08:32:35

标签: javascript angularjs

当以下代码中的模型中没有点(。)时,角度验证正在运行...

<div class="form-group">
   <label for="title">Post Title</label>
      <input ng-model="new_title" class="form-control" name="new_title" type="text" required/>
      <p class="error" ng-show="addForm.new_title.$touched && addForm.new_title.$invalid">This field is required</p>
 </div>

但是当我在下面的代码中使用ng-model="new.title"时,它无效...

<div class="form-group">
    <label for="title">Post Title</label>
        <input ng-model="new.title" class="form-control" name="new.title" type="text" required/>
        <p class="error" ng-show="addForm.new_title.$touched && addForm.new.title.$invalid">This field is required</p>
</div>

以下是我在控制器中使用new的内容

$scope.submit = function(){
    var request = CRUD.create($scope.new);
    request.success(function(response){
    $scope.flash = response.status;
 });
};

帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

您不应该随模型更改名称。

<div class="form-group">
    <label for="title">Post Title</label>
        <input ng-model="new.title" class="form-control" name="new_title" type="text" required/>
        <p class="error" ng-show="addForm.new_title.$touched && addForm.new_title.$invalid">This field is required</p>
</div>

它应该是这样的。

验证不会检查您的模型。它使用name属性检查绑定范围的表单模型。因此,在检查错误时,您可以使用表单的name属性和输入。您只需将输入的名称从new.title更改为new_title

答案 1 :(得分:1)

您不能在变量名中使用点(.)。您应该使用_camel-case来声明变量,如:

new_titlenewTitle

如果要使用点(.)表示法,请使用

var info = {
   title: "your title"
}

然后你可以使用像

<input ng-model="info.title" class="form-control" name="info.title" type="text" required/>

但您无法使用new作为变量名称。 new是保留关键字