2016-09-04 2 views
0

Я работаю над угловым приложением. прямо сейчас у нас есть эти директивы, которые являются панировочными сухарями, которые ведут вас через длинные формы мастера. Одна из проблем, с которыми я столкнулся, заключается в том, что у вас есть ошибка в одной части формы и нажмите на палитру, чтобы вернуться назад, она не позволяет вам продвигаться по всей форме (следующая кнопка прерывается). Поэтому решение этого (я считаю) не позволяет вам нажимать на эти панировочные сухари, если у формы нет никаких ошибок.

Эти панировочные сухари находятся в директивах. Как я могу получить доступ к форме из этой внешней директивы? Я пробовал:
$scope.competitionCreateForm
$scope.$competitionCreateForm
competitionCreateForm.$error
и т.д., и ничего, кажется, работает. Однако, когда я console.log competitionCreateForm, я вижу фактический объект формы, поэтому я знаю, что эта часть работает.

Вот что директива выглядит (CoffeeScript)

angular.module('App').directive 'breadcrumb', [ 
    'WizardHandler' 
    (WizardHandler) -> 
    { 
     restrict: 'E' 
     scope: 
     breadcrumbs: '=breadcrumbs' 
     placeholder: '@' 
     templateUrl: 'directives/templates/breadcrumbs.html' 
     #require: '' 

     controller: ['$scope', ($scope) -> 
     # checking right here 
     $scope.goToStep = (step) -> 
      $scope.currentStepValid = true 
      WizardHandler.wizard().goTo(step) 
     ] 
    } 
] 

Я просмотрел другие ответы, и это, казалось, не работает. возможно, мне нужно что-то добавить, когда я впервые создаю форму, но я не уверен. Кто-нибудь знает, как я могу проверить статус моего объекта формы из внешней директивы?

ответ

0

Я был в состоянии получить эту работу, добавив

scope: 
    breadcrumb: '=breadcrumbs' 
    placeholder: '@' 
    form: '?=form' 

, который добавляет возможность при необходимости добавлять в форму директивы крошек

breadcrumb[breadcrumb='breadcrumb' form='createForm']

1

Таким образом, используя свойство scope в директиве, вы создаете изолированную область действия для этой директивы, это означает, что директива не может получить доступ к области родительской директивы.

У вас есть два варианта, если вы хотите продолжать использовать изолированный объем:

  • Вы можете использовать два способа связывания, как вы делали с breadcrumbs.

  • Другой вариант - использовать односторонние привязки, то есть '<', чтобы передать состояние формы в вашу директиву. Это обновит директиву, когда это свойство изменится так же, как и двусторонняя привязка, но не позволит изменять форму из директивы.

+0

спасибо за ответ , у вас будет пример того, как это сделать? –