如何在Angular中未定义时创建$ modelValue?

时间:2014-02-06 12:23:24

标签: angularjs angularjs-directive

我正忙于创建时间输入框指令。 HTML看起来像这样:

<time-input data-ng-model="model.Time"></time-input>

model.Time可能是null。这也意味着$modelValue的{​​{1}}未定义。但是当我想创建/设置ngModelController时,它会被设置为未定义,我不知道为什么。

这是一个Fiddle,您可以在其中查看我的问题。你可以看到时间1正在工作,但时间2不工作。只要您输入时间2的有效值,就会将其删除。

有人可以解释为什么会这样,以及如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

你不需要手工放置模型......它会自动放置一个从解析器返回的值,以及视图具有formatter返回的值

works here

所以你的解析器看起来像这样,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;

 })