angular.js $ scope не присоединяется к форме во внешней директиве

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)
      ]
    }
]

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

Теги:
coffeescript

2 ответа

0
Лучший ответ

Я смог получить эту работу, добавив

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

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

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

1

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

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

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

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

  • 0
    Большое спасибо за ответ. у вас есть пример того, как это сделать?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню