2014-10-15 2 views
0

У меня есть форма, которая не позволяет вам отмечать флажки в первой записи, что очень странно. Это похоже на то, что он не регистрирует клик.

Если, однако, вы отправляете форму и проверяете те же флажки после отправки первой формы, она позволяет вам установить флажки. Почему это?

Это то, что мои флажки выглядеть следующим образом:

<label ng-repeat="sector in sectors" for="{{sector}}"> 
    <input type="checkbox" id="{{sector}}" value="{{sector}}" ng-model="newService.sectors[sector]">{{sector}} 
</label> 

Я также пытаюсь работать, как реализовать $setPristine в этой форме, так что это дает виде класс .ng-pristine при представлении.

Я очень новичок в Angular, и я медленно пытаюсь понять, как все это работает.

Я настроил скрипку здесь: http://jsfiddle.net/nh63w6e0/2/

Любая помощь приветствуется. Заранее спасибо!

+0

Сценарий загружается угловым дважды, один раз из меню «Рамки и расширения» и один раз из «Внешних ресурсов». Удалите один, и он работает, в отношении «неконтролируемых» флажков. –

+0

@NikosParaskevopoulos Я удалил внешние ресурсы Angular include, но флажки по-прежнему не работают. http://jsfiddle.net/nh63w6e0/5/ – realph

ответ

1

Проблема

Использование JSFiddle пример, если вы смотрите на консоли при щелчке в окошке, вы увидите сообщение об ошибке:

Cannot set property 'health' of undefined

Это потому, что $ scope.newService WASN Создано, и вы пытались сделать что-то эквивалентное $scope.newService['health'] = true, установив флажок. Итак, как вы можете видеть, $ scope.newService не определен.

Решение

Вы должны добавить вызов resetCreateForm для инициализации $scope.newService свойства.

JSFiddle (проверить последнюю строку, с комментарием)

Edit:

Обращаясь к вашей необходимости использовать $ setPristine, вы могли бы проверить JSFiddle аут.

Все, что вам нужно сделать, это добавить атрибут name в форму и назвать его как свойство $ scope по его названию. Затем вы вызываете $setPristine() на свойство формы.

+0

Ahh, я думал, что '$ scope.createService = createService' инициализирует' resetCreateForm', который находится внутри него. Я ошибаюсь? Кроме того, знаете ли вы, как я буду использовать '$ setPristine' в этой форме, когда он будет сброшен? Спасибо за скрипку. – realph

+0

'$ scope.createService = createService' присваивает свойству' $ scope.createService' ссылку на локальную функцию 'createService'. Он не будет * выполнять * функцию, поэтому вызов 'resetCreateForm()' внутри 'createService' не произойдет. –

+0

И я не понял вашего вопроса о $ setPristine, если бы вы могли попробовать еще раз другими словами. –

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