2014-02-24 88 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