我有一個角度的表單,即類別文本輸入和ID輸入。該ID必須是該類別唯一的。所以,如果我有Cat1
以下項目:角形。如何獲得一些重新評估他人的投入?
Cat1 - 123
Cat1 - 245
Cat1 - 456
然後,如果我試圖與該類別Cat1
和ID 123
進入一個新的項目,然後該輸入將不會是唯一的類別和形式不能被提交。如果該ID更改爲1234
那麼它將是有效的。
爲了達到這個目的,我有一個叫做unique
的自定義指令,它需要ngModel
。它看起來像這 -
HTML的
<input name="ID"
required
unique="id in getItemsByCategory(newCategory)"
type="text"
ng-model="newId"></input>
JS-
.directive('unique', function() {
return {
require: '^ngModel',
link: function(scope, ele, attr, ngModelController) {
ngModelController.$validators.unique = function(val) {
var uniqueInRegex = /([^\s]+)\s+in\s([^\s]+)/i;
var matches = attr.unique.match(uniqueInRegex);
var property = matches[1];
var collection = scope.$eval(matches[2]);
for(var i = 0; i < collection.length; i++) {
var item = collection[i];
if(item[property] === val) {
console.log('not unique');
return false;
}
}
console.log('unique');
return true;
};
}
};
});
的正常工作:
但是,如果驗證發現場不唯一基於類別,類別字段發生變化,那麼驗證器就不會reevaula TE。
這裏是什麼什麼這些的GIF見過一個JSBin:
http://jsbin.com/wubesutugo/edit?html,js,output
反正我可以有一個輸入「接觸」另一個時,它改變輸入?我希望這個驗證指令是通用的,因爲我有多個地方想使用它。所以我不想在控制器中使用這個邏輯。
我已經找到了解決方案,但如果有更好的解決方案,我會稍微延長這個問題。在類別輸入中,我有一個看起來像這樣的ng變化 - 「' –