Bro*_*ato 3 knockout.js durandal
我在一个带有durandal模板的网站上工作.
我有这个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')));
}
};
Run Code Online (Sandbox Code Playgroud)
以下是我认为的电话:
<input type="text" class="datepicker" data-bind="date: demandDate" />
Run Code Online (Sandbox Code Playgroud)
这用于以正确的格式格式化我的日期.它的工作原理我的意思是我的输入字段中的日期格式正确.
但问题是每当在输入字段中修改日期时,系统都没有检测到任何变化.
如果我将'date'替换为'value',那么当值改变时会正确解释,但我会错过格式化:
<input type="text" class="datepicker" data-bind="value: demandDate" />
Run Code Online (Sandbox Code Playgroud)
任何的想法?
在update:之后的结合处理的被激发valueHasMutated(),从发出knockout.js ViewModel.如果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')));
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5377 次 |
| 最近记录: |