2014-02-24 58 views
1

我是新来的角,我尝试基于属性为指令添加验证。以下是我如何使用指令:在AngularJS指令中向HTML元素添加属性

<div sc-textbox data-bind-to="fieldToBind" data-field-name="fieldName" data-required="someValue != 'Office'"></div> 

数据必需属性可能存在也可能不存在。对于该指令的模板是:

<input id="{{fieldName}}" name="{{fieldName}}" type="text" data-ng-model="bindTo" /> 

当数据要求的属性是本我想补充数据-NG-需要=“{{需要}}”来输入。我会如何去做这件事?

为指令的范围是:

scope: { 
    'bindTo': '=', 
    'fieldName': '@', 
    'required': '=' 
} 

任何帮助是极大的赞赏。

回答

0

由于您的作用域范围有限,因此您的指令作用域中需要一个表示“someValue!='Office'”的布尔值。

或把someValue中的范围和做到这一点:

<input id="{{fieldName}}" 
    data-ng-required="(someValue != 'Office') && required" 
    name="{{fieldName}}" type="text" 
    data-ng-model="bindTo" /> 

更新

要添加 “数据-NG-需要” 属性是指令。您无法在Angular中动态添加和删除DOM中的指令。如果你真的不想在你的DOM的一部分中使用“data-ng-required”,并且你希望它是动态的,那么你可以做的最接近的事情就是$ compile,并将这个输入附加为2个模板,和一个没有

+0

data-required =“someValue!='Office'”仅仅是一个有条件需求的例子。它可能仅仅是data-required =“true”,或者它可以放在一起,在这种情况下,我不希望所需的数据ng必须存在。我希望这是有道理的。 – Elliot

+0

Angular无法修改模板的HTML吗?似乎应该可以采取: and添加一些属性,如data-ng-required或者是我不能添加指令的问题? 您提到$ compile。是否可以在编译函数中执行此操作? – Elliot

+0

在编译之前,您可以执行任何您想要的操作模板,一个简单的例子:dest.append($ compile('

{{stepNumber}}

')($ scope)); – koolunix

0

为什么不只是在那里留下ng-required。这是它的用途。

+0

的问题,因为它可能不是必需的。此指令将用于所有表单上的所有文本框,并且在某些情况下,该字段是必需的,而在其他情况下则不是这样,所以我只想在指令具有数据所需的集时添加ng-required。 – Elliot