首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我输入的BindingHandlers没有正确解释

我输入的BindingHandlers没有正确解释
EN

Stack Overflow用户
提问于 2013-03-29 07:51:34
回答 1查看 5.5K关注 0票数 4

我在一个有硬脑膜模板的网站工作。

我有个约会用的bindingHandlers:

代码语言:javascript
复制
ko.bindingHandlers.date = {
    update: function (element, valueAccessor, allBindingsAccessor) {
        var value = valueAccessor();  // 'Mon Sep 10 2012 02:00:00 GMT+0200 (Paris, Madrid (heure d’été))'; 
        var date = moment(value());
        $(element).val((date.format('DD/MM/YYYY')));
    }
};

以下是我认为的呼吁:

代码语言:javascript
复制
<input type="text" class="datepicker" data-bind="date: demandDate" /> 

这用于将我的日期格式化为正确的格式。我的意思是,我的日期在我的输入字段中是正确格式化的。

但是问题是,每当输入字段中的日期被修改时,系统就没有检测到任何更改.

如果将“日期”替换为“值”,则值更改时将正确解释,但没有格式化:

代码语言:javascript
复制
<input type="text" class="datepicker" data-bind="value: demandDate" /> 

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-29 09:43:22

绑定处理程序的update:是在从knockout.js ViewModel发出valueHasMutated()后触发的。如果要从自定义的ViewModel中正确地将更改应用到bindingHandler,则需要在init:中为输入的更改事件创建一个事件处理程序,然后向ViewModel发出更改。

示例:

代码语言:javascript
复制
ko.bindingHandlers.date = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        ko.utils.registerEventHandler(element, 'change', function (event) {
            valueAccessor().demandDate($(element).val());
        }
    },
    update: function (element, valueAccessor, allBindingsAccessor) {
        var value = valueAccessor();  // 'Mon Sep 10 2012 02:00:00 GMT+0200 (Paris, Madrid (heure d’été))'; 
        var date = moment(value());
        $(element).val((date.format('DD/MM/YYYY')));
    }
};
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15699418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档