2015-02-26 3 views
2

У меня есть экран, построенный с несколькими стеками ng-includes. Последний, в частности, я создаю экран на основе пользовательской конфигурации.Почему я не могу получить доступ к объекту формы внутри ngInclude на angularJS?

Иногда мне нужно показать форму в одном из этих включенных шаблонов. И когда мой пользователь нажимает кнопку «Сохранить», мне нужно проверить, действительно ли все поля в форме.

В то же время, когда вы пытаетесь получить доступ к объекту формы, чтобы проверить значение $ valid, моя форма не определена.

После дня борьбы с ним я обнаружил, что процесс ng-include не принимает мой объект формы, который будет создан.

Я создал этот plunker, чтобы увидеть, если это на самом деле происходит на простом проекте, делая рабочую форму и не работает один: http://plnkr.co/edit/4oMZYLgaYHJPoSZdSctI?p=preview

В основном, создал форму, как это, с требуемыми угловыми атрибутами:

<form name="sampleForm"> 
    <input type="text" name="aws" required ng-model="myValue"> 
    <br/>myValue: "{{ myValue }}" 
    <br/> 

    <input type="text" name="aws" required ng-model="myValue"> 
    <br/>myValue: "{{ myValue }}" 
</form> 

и пытается получить доступ к форме объекта, как это:

$scope.sampleForm.aws.$valid 

И результат:

$scope.sampleForm === undefined 

Кто-то знает, как решить эту проблему?

ответ

4

С ng-include создает новую область действия, $scope.sampleForm будет не указывать с включенной страницы.

Решение должно получить декларацию ng-controller="formController" внутри самой включенной HTML-страницы, что, я думаю, также является лучшим дизайном, поскольку я не вижу сценария, где он не «контролирует» форму.

Другая, не включенная форма, очевидно работает, как и следовало ожидать.

Plunker

+0

Да. Код, который я сделал на Plunker, немного наивен по сравнению с моим реальным решением. В моем случае «formController» является чем-то более общим, например: RegistrationController, и он все еще контролирует вещи вне этой формы. Вы предлагаете создать для него еще один контроллер? –

+0

@DiegoLaucsen Да, я предлагаю это :) –

+0

Работа !! Tks за помощью. –

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