2013-12-23 5 views
3

У меня есть модель, которая выглядит следующим образом:Как проверить свойства дочерних объектов в angularjs?

$scope.item = { 
    userId: 2, 
    bioValues: [{ 
     name: 'Systolic', 
     biometricValue: 120 
    }, { 
     name: 'Diastolic', 
     biometricValue: 80 
    }] 
    }; 

Мои имена формы являются "bioValues ​​[0] .biometricValue, bioValues ​​1 .biometricValue".

Но когда я пытаюсь проверить мою форму, «ng-show» на моих ошибках проверки поля не запускается. Я посмотрел на объект формы в firebug, и все мои применимые ошибки формы корректно отмечены как недопустимые, но ng-show не запускается.

Адрес plunker. Попробуйте оставить один из входов пустым. Необходимая ошибка не запускается на ng-show.

Любые идеи? Благодарю.

ответ

4

Нет необходимости указывать поля, в которых вы точно указываете имя, в качестве модели, которую вы показываете.

Here is a working plunker.

Единственное изменение, которое я сделал было назвать поля в шаблоне bioValues1 и bioValues2.

HTML:

<body ng-controller="MyCtrl"> 
    <form novalidate name="form"> 
    <div class="row"> 
     <input type="text" name="bioValues1" ng-model="item.bioValues[0].biometricValue" required /> 
     <span class="error" ng-show="form.bioValues1.$error.required">*Required</span> 
    </div> 
    <div class="row"> 
     <input type="text" name="bioValues2" ng-model="item.bioValues[1].biometricValue" required /> 
     <span class="error" ng-show="form.bioValues2.$error.required">*Required</span> 
    </div> 
    </form> 
</body> 

JS:

var myApp = angular.module("MyApp", []); 

myApp.controller("MyCtrl", function($scope) { 
    $scope.item = { 
    userId: 2, 
    bioValues: [{ 
     name: 'Systolic', 
     biometricValue: 120 
    }, { 
     name: 'Diastolic', 
     biometricValue: 80 
    }] 
    }; 

}); 
+0

достаточно точно. Я использовал индексирование в цикле повтора для моего имени. Теперь я понимаю, почему это не нужно. Спасибо. Вытягивая мои волосы на этом. – trevorc

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