似乎checkZip函数在用户的zip绑定到参数之前触发。有没有更好的方法来实现角度工具?我想在他们输入正确的邮政编码后立即启动用户流程的下一步。
HTML
<input type="text" placeholder="Zipcode" ng-model="zip" ng-change="checkZip('{{zip}}')">
的Javascript
// Zipcode Key
$scope.zipKey = [94203, 94204, 94205];
// Zipcode checker
$scope.checkZip = function(zip) {
var key = $scope.zipKey;
if (zip.length == 5) {
for(var i = 0;i<key.length;i++) {
if (key[i] == zip) {
// Initiate State Change
$scope.successAlert = 'We serve in your area!';
}
}
}
}
答案 0 :(得分:2)
您最好使用角度表格验证并编写自定义验证器。
以下a great article涵盖了您需要了解的所有内容。
根据您的需要,您可以编写如下指令:
app.directive('ensureZipcode', function() {
return {
require: 'ngModel',
link: function(scope, element, attrs, modelController) {
scope.$watch(attrs.ngModel, function() {
valid = true // or false, implement your logic here
modelController.$setValidity('zipcode', valid);
});
}
}
});
请注意:modelController被设置为link
函数的第四个参数,因为我们指定了require: 'ngModel'
。