Доступ к форме из директивы

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

требуют: "форму"

или

требуют: '^ form'

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

требуют: '^ form' или требуют: '^^^ form' и т.д.

Как я могу разработать свою директиву, чтобы потребовать от нее самую близкую форму?

Благодарю!

1 ответ

Неважно, насколько вложенна директива. Он будет искать до тех пор, пока не найдет своего предка с этим контроллером, или он выкинет ошибку.

Поэтому, если у вас есть такая директива:

app.directive("formSpice", function () { return { restrict: "A", require: "^form", scope: {}, link: function (scope, element, attrs, ctrl) { scope.formName = ctrl.$name; } }; });

И ваша разметка выглядит так:

<form name="myForm"> <div form-spice=""> <h3>Level 1 - Form Name: {{formName}}</h3> <div form-spice=""> <h3>Level 2 - Form Name: {{formName}}</h3> <div form-spice=""> <h3>Level 3 - Form Name: {{formName}}</h3> </div> </div> </div>
</form>

Он все равно найдет форму во всех трех случаях.

Демо-версия

licensed under cc by-sa 3.0 with attribution.