我在一个有硬脑膜模板的网站工作。
我有个约会用的bindingHandlers:
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" /> 有什么想法吗?
发布于 2013-03-29 09:43:22
绑定处理程序的update:是在从knockout.js ViewModel发出valueHasMutated()后触发的。如果要从自定义的ViewModel中正确地将更改应用到bindingHandler,则需要在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')));
}
};https://stackoverflow.com/questions/15699418
复制相似问题