2015-12-01 2 views
3

Существует простая формаПриступаем к форме в пределах угловому (this.form.name)

<ng-form name="foo"> 
    <button /> 
</ng-form> 

Нажмите на кнопку должно насторожить имя формы Foo.

Есть ли угловой способ сделать это?

EDIT: Скажите, что имя моего родителя - это возможное решение.

+0

где вы хотите получить имя 'form'? –

+0

@PankajParkar: в форме –

+0

@Vienna Я написал ответ ниже. Пожалуйста, смотрите. Это будет работать. Благодаря! – krishnaxv

ответ

0

Предполагая, что кнопка имеет форму как прямой родительский объект, вы можете использовать свойство $event на ng-click, чтобы пересечь DOM и найти элемент родительской формы. Используется angular.element(someElement).parent().

$scope.showFormName = function($event) { 
    $scope.formName = angular.element($event.target).parent()[0].name; 
}; 
<button ng-click="showFormName($event)">Show Form Name</button> 

http://plnkr.co/edit/yDPc76rqUHpOcL2aGeIU?p=preview

Если кнопка не является прямым потомком элемента формы, или не в самой форме, то более продвинутый DOM обход может потребоваться, скорее всего, через JQuery, поскольку это не является частью проектных целей Угловой структуры.

+0

да, это, спасибо! –

+0

Я рад, что это сработает для вас, и мне очень жаль, что нам так долго понадобилось понять проблему. Я очищу некоторые из этих старых комментариев. – Claies

+0

спасибо, я сделаю это тоже .. –

0

Вы должны иметь возможность доступа к нему на $scope:

$scope.foo

+0

Я не знаю, foo –

0

ng-click ожидает либо Angular expression или функции в текущей области. Похоже, Angular не позволяет использовать глобальные методы.

Угловая использует $parse сервис для вычисления выражения в ng-click="expression".

$parse использует строковое синтаксический интерпретировать expression и ограничивает ваш доступ к переменные, функции и объекты только те, которые являются свойствами $scope объекта или свойства любых $parent объектов области.

Просто попробуйте это в своем Template & Controller!

Шаблон

ng-click="alert(foo.$name)" <!-- foo ~ MY_FORM_NAME in your case --> 

Контроллер

$scope.alert = function(formName){ 
    alert(formName); 
} 

Это будет выполнять JavaScriptalert() правильно.

Для получения дополнительной информации см. AngularJS/ngClick.

Надеюсь, это поможет!

+1

спасибо, но я не знаю foo. Я хочу знать foo. Он должен работать так: «Я кнопка. Я помещен в форму, и я не знаю имени моей формы. Скажите мне имя моей формы». –

+0

'foo' - это просто ссылка на ваш объект' form', ''. В принципе, 'имя' вашей' формы', которое вы упомянули в вашем опубликованном коде. – krishnaxv

+1

Да, вы правы, но представьте себе, у меня нет имени формы, я не знаю foo, у меня нет информации о форме. Я даже не знаю, если я (как кнопка) в форме. –

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