Angular.JS,指令模板中的数据绑定当表单验证检查时

时间:2014-08-27 09:53:30

标签: angularjs

我有绑定问题。我想验证电子邮件地址

一个。 <input type="email" required ng-model="emailAddress" name="{{name}}" />

B中。 <input type="email" required ng-model="emailAddress" name="emailAddress2" />

&#39; A&#39;是不行,我想使用&#39; A&#39;表达

但是,B正在工作。

我想绑定表达式使用&#39; A&#39;表达

.directive('emailInput', function() {
        return {
            require: '^form',
            restrict: 'E',
            template: '<input type="email" required ng-model="emailAddress" name="{{name}}" />',
            scope: {
                send2: '&'
            },          
            link: function(scope, elem, attrs){
                    scope.name="emailAddress2"; // <--- this is not binding to input element

            }
        };
    });

HTML

<email-input></email-input> inputIsValid={{myForm.emailAddress2.$valid}}

2 个答案:

答案 0 :(得分:0)

您需要设置名称,然后编译angular的input-element以注意新名称并使$ valid工作。

...
link: function (scope, elem) {
   var input = elem.children()[0];
   input.name = "emailAddress2";
   $compile(input)(scope);
}
...

答案 1 :(得分:0)

从您的HTML中,按如下所示进行修改:

<email-input name="name"></email-input> inputIsValid={{myForm.emailAddress2.$valid}}

现在,您在指令(scope.name = "whatever")中更改的任何值都将绑定到模板。 我希望它有所帮助。