Knockout.js 未正确解释带敲除的输入上的BindingHandler
我使用durandal模板在一个网站上工作 我的约会有以下绑定处理程序:Knockout.js 未正确解释带敲除的输入上的BindingHandler,knockout.js,durandal,Knockout.js,Durandal,我使用durandal模板在一个网站上工作 我的约会有以下绑定处理程序: 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é))';
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')));
}
};
在我看来,这是一个呼吁:
<input type="text" class="datepicker" data-bind="date: demandDate" />
这用于将我的日期格式化为正确的格式。我的意思是我的日期在我的输入字段中格式正确
但问题是,无论何时在输入字段中修改日期,系统都没有检测到任何更改。
如果我将“日期”替换为“值”,则当值更改时,会正确解释该值,但我忽略了格式:
<input type="text" class="datepicker" data-bind="value: demandDate" />
有什么想法吗?从
knockout.js
视图模型
发出valueHasMutated()
后,绑定处理程序的更新:
被触发。如果要从自定义的bindingHandler
将更改正确应用于ViewModel
,则需要在init:
中为输入的更改事件创建事件处理程序,然后对ViewModel
发出更改
例如:
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')));
}
};
谢谢你给我介绍情况。在这里可以找到一个完整的解决方案:不会使用valueAccessor()($(element.val());比valueAccessor().demandDate($(element.val())更有意义;要使此绑定更加可重用?