虽然不满于easyui的效率,easyui的使用。但除了无奈,还是要解决问题的。其中datetimebox无法进行双向绑定。html的改变无法通知到后台。
使用的是<script type="text/html">
datetimebox的html写法:
<input class="z-txt easyui-datetimebox" style="width: 220px;" data-bind="dateboxtimeValue:form.HappenTime" data-options="required:true,showSeconds:false" />
在js中创建绑定的方式:
//value
ko.creatEasyuiValueBindings = function (o) {
o = $.extend({ type: '', event: '', getter: 'getValue', setter: 'setValue', fix: $.noop,formatter: function (v) { return v; }}, o);
var customBinding = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var jq = jqElement(element), handler = jq[o.type]('options')[o.event], opt = {};
//handle the field changing
opt[o.event] = function () {
handler.apply(element, arguments);
var value = jq[o.type](o.getter);
if (valueAccessor() == null) throw "viewModel中没有页面绑定的字段";
valueAccessor()(value);
};
//handle disposal (if KO removes by the template binding)
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
jq[o.type]("destroy");
});
o.fix(element, valueAccessor);
jq[o.type](opt);
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
value = ko.utils.unwrapObservable(valueAccessor());
jqElement(element)[o.type](o.setter, o.formatter(value));
}
};
ko.bindingHandlers[o.type + 'Value'] = customBinding;
};
ko.creatEasyuiValueBindings({ type: 'datetimebox', event: 'onSelect', formatter: com.formatTime });
希望大神们帮我看到。因为看到easyui中的datetimebox没有事件,无法通过控制事件的方式来通知变化。
还有如何在<script type="text/html">中如何使用script或css,谢谢。
ko 只能应用于普通的html控件绑定,或者专门针对ko封装的datetime插件,楼主放弃吧。
event: 'onChange',
真的可以 感谢