从指令访问表单

时间:2014-04-04 00:58:16

标签: forms angularjs angularjs-directive

我需要从angularjs指令中访问当前表单(可以嵌套)。我知道我可以使用

  

要求:'form'

  

要求:'^ form'

升级,但是如果我设计的指令可以在一个表单上深入1级而在另一个表单上深入三个级别会怎么样?

  

要求:'^ form'或要求:'^^^ form'等

如何设计我的指令以要求最近的形式呢?

谢谢!

1 个答案:

答案 0 :(得分:2)

指令嵌套的距离无关紧要。它将一直搜索,直到找到具有该控制器的祖先,否则它将引发错误。

所以如果你有这样的指令:

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

你的标记看起来像这样:

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

它仍会在所有三个实例中找到该表单。

Live Demo