【发布时间】:2015-05-10 20:59:40
【问题描述】:
我的 angularjs 应用程序中有一个指令。我想将一个指令与多个模型绑定。但我只想设置一个模型的有效性,即数字 这是我的代码。
<form name="userForm">
<select unique-phone name="country" class="form-control" ng-model="newUser.country" ng-options="country.name for country in userdata.country"></select><!-- this drop down is for prefix like +971 -->
<select unique-phone name="code" ng-model="newUser.code" ng-options="mobile for mobile in userdata.mobile_codes" required></select>
<input unique-phone name="number" ng-model="newUser.number" type="number" ng-pattern="/^[0-9]+$/" />
</form>
//Javascript
.directive('uniquePhone', ['$http', function ($http) {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attrs, ngModel) {
scope.$watch( function(){ return element.val(); }, function(value){
if(scope.newUser.number === undefined || scope.newUser.country === undefined || scope.newUser.code === undefined || scope.newUser.number.toString().length != 7) {ngModel.$loading = false; return;}
ngModel.$loading = true;
var objFInal = scope.newUser.country.code + scope.newUser.code + scope.newUser.number;
$http.get("/api/checknumber/" + objFInal).success(function(data) {
ngModel.$loading = false;
ngModel.$setValidity('taken', JSON.parse(data));// I just want to set validity of number model on each case...
// like userForm.number.$setValidity('taken', true) instead of ngModel.$setValidity
});
})
}
};
}])
在每次调用国家元素/代码元素或数字元素时,我只想设置数字模型的有效性。
【问题讨论】:
-
你找到答案了吗?
-
@SergeyPanfilov 我写了我的解决方案。如果您能找到更好的解决方案,请告诉我。
-
我的情况有点不同,无论如何这是我的情况的解决方案:stackoverflow.com/a/36722197/930170
标签: javascript angularjs