2016-01-27 1 views
0

Угловая проверка работает, когда нет точки (.) В модели в этом следующем коде ...Угловая проверка не работает, когда точка в модели

<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; 
}); 
}; 

Справка будет принята с благодарностью

+0

Является ли 'new'' '' {} '? – Rayon

+0

Чтобы иметь возможность работать, новый должен быть определен как объект Javascript с помощью {}. Как это объявлено в вашем JS? – acostela

+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

Также' addForm.new.title. $ Invalid' должен стать 'addForm.new_title. $ Invalid'. – cezar

+0

Да. Спасибо, что заметили это. Редактирование сделано –

+0

Спасибо .. Это сработало –

1

Вы не можете использовать dot (.) в имени переменной. Вы должны использовать _ или camel-case объявить переменную как:

new_title или newTitle

, если хотите использовать точечную (.) обозначения затем использовать как

var info = { 
    title: "your title" 
} 

, то вы можете использовать как

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

, но вы не можете использовать new в качестве имени переменной. new является зарезервированным ключевым словом

+0

спасибо .. Это сработало –

Смежные вопросы