1

我创建了一个自定义指令,以允许以各种格式输入日期,但是当您完成输入日期并离开输入时,不会触发摘要。

我怎样才能让摘要开火?

细节

该指令很高兴地允许用户输入文本并以标准日期格式返回一个字符串,以便模型在其有效日期时使用。

它使用格式化程序和解析器来做到这一点,并且实际处理是在输入标签的 on blur 事件中完成的。

Plunkr显示了格式化日期的指令,如果您随后更改输入框中的日期,您将看到它旁边的绑定值永远不会更新。

在这一点上,我只需要它触发摘要/更新模型

4

1 回答 1

2

您只需要$applybind. 每当您绑定到 DOM 事件时,都必须$apply强制执行摘要。

// configure events on the element
    function configureEvents(element, scope, ctrl, allowNull) {

        // remove handlers that would fire events while the user
        // is inputting data
        element.unbind('input').unbind('keydown').unbind('change');

        // bind to the blur event as we know the user should have 
        // finished inputting when they leave the control
        element.bind('blur',function() {

            scope.$apply(function() {
              processUserInput(element, ctrl, allowNull);
            });
        });
    }

为了实现这一点,我将范围传递给configureEvents

configureEvents(element, scope, ctrl, allowNull);

这是你的 Plunker的一个分支,它正在工作。

于 2013-08-15T11:29:02.370 回答