我有一个非常简单的指令,其目的是做两件事:
我正在使用 Jasny bootstrap 插件,为日期输入创建“数据屏蔽”。
<input ng-class="{ 'input_error' : bdayForm.bday.$invalid && !bdayForm.bday.$pristine
|| bdayForm.bday.$invalid && submitted }"
apply-scope ng-model="bday" name="bday" id="bday" type="text" placeholder=""
data-mask="99/99/9999" class="required">
注意data-mask
属性。这将应用插件提供的数据屏蔽功能。 apply-scope
属性是我创建的指令的名称。这是我到目前为止的代码:
app.directive("applyScope", function() {
return {
require: "ngModel",
link: function(scope, element, attrs, ngModel) {
element.bind('keydown', (e) => {
const arr = element[0].value.split("/")
let newBday = `${arr[2]}/${arr[1]}/${arr[0]} 00:00:00`
newBday = (new Date(newBday).getTime() / 1000 + 7200) //This will convert the bday to unix time stamp.
if (!newBday) {
return false;
}
ngModel.$setViewValue(newBday);
})
}
};
});
如您所见,我将“99/99/9999”字符串拆分为数组,然后尝试构建一个unix时间戳。
如果是NaN
,我会返回false
。我想要实现的是,当函数返回$invalid
时,将输入字段设置为false
。我需要使用这个$invalid
属性来使我的ng-class
条件工作(基本上只是将红色应用于输入)
有人能解释我应该怎么做吗?