【发布时间】:2017-06-13 13:49:37
【问题描述】:
我目前正在使用事件绑定来格式化电话号码(转换为 xxx-xxx-xxxx 格式),并且我想创建一个可重用的自定义绑定以供将来在我们的应用程序中使用。当前的事件绑定工作正常,但我无法让自定义绑定正常工作。任何人都可以看看下面并告诉我我的问题吗?
当前事件与 viewModel 方法的绑定:
<input class="form-control" id="Phone" type="text"
data-bind="event: {blur: formatPhone}, enable: isInputMode, value: Phone" />
self.Phone = ko.observable(model.MainPhone).extend({ maxLength: 20 });
self.formatMainPhone = function() {
var tempString = self.Phone().replace(/\D+/g, "").replace(/^[01]/, "").replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3").substring(0, 12);
self.Phone(tempString);
}
自定义绑定处理程序不起作用:
<input class="form-control max225" id="Phone" type="text"
data-bind="formatPhoneNumber: Phone, enable: isInputMode, value: Phone" />
self.Phone = ko.observable(model.MainPhone).extend({ maxLength: 20 });
ko.bindingHandlers.formatPhoneNumber = {
update: function (element, valueAccessor) {
var phone = ko.utils.unwrapObservable(valueAccessor());
var formatPhone = function () {
return phone.replace(/\D+/g, "").replace(/^[01]/, "").replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3").substring(0, 11);
}
ko.bindingHandlers.value.update(element, formatPhone);
}
};
【问题讨论】:
标签: javascript mvvm knockout.js