Директива Angular transcluded привязывается только в первый раз

#angularjs #transclusion #angular-directive

#angularjs #преобразование #angular-директива

Вопрос:

Я разрабатываю простую директиву редактирования на месте. Моя цель — использовать содержимое директивы (форму) в качестве шаблона и изменить поля ввода на метки. При нажатии на форму директива должна заменить ее на исходное содержимое редактора.

Я создал plunk. Проверьте это ЗДЕСЬ .

В первый раз она связывает свои данные, но в дальнейшем не связывает их.

Мои вопросы: Что не так с моей концепцией? Как это можно исправить, чтобы соответствовать ожидаемому поведению?

Любая помощь или комментарий приветствуются. Я здесь совсем застрял. Спасибо.

Комментарии:

1. Я ссылался на неправильную версию plunk. Отредактировано.

Ответ №1:

Вы должны использовать ng-click в своей директиве вместо непосредственного использования обработчика событий onclick таким образом, все ваши изменения остаются в цикле событий angular, поэтому выполняется

    template: '<div class="readonly-item" ng-transclude ng-click="switchForm()"></div>',
  

и удаление вашего назначения обработчика onclick enevet

вы получаете это

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

вы также можете получить тот же результат, просто добавив

   scope.$apply() 
  

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

Комментарии:

1. Спасибо 🙂 Это было все. Я думал, что что-то пропустил.