我正忙于创建时间输入框指令。 HTML看起来像这样:
<time-input data-ng-model="model.Time"></time-input>
model.Time
可能是null
。这也意味着$modelValue
的{{1}}未定义。但是当我想创建/设置ngModelController
时,它会被设置为未定义,我不知道为什么。
这是一个Fiddle,您可以在其中查看我的问题。你可以看到时间1正在工作,但时间2不工作。只要您输入时间2的有效值,就会将其删除。
有人可以解释为什么会这样,以及如何解决这个问题?
答案 0 :(得分:2)
你不需要手工放置模型......它会自动放置一个从解析器返回的值,以及视图具有formatter返回的值
所以你的解析器看起来像这样,updateTimeInModel返回模型的对象:
controller.$parsers.unshift(function (value) {
if (!value) return;
var valid = regEx.test(value);
controller.$setValidity('validTime', valid);
if (valid) {
return updateTimeInModel();
}
console.log(controller.$modelValue);
return null;
})