如何在自定义绑定中调用ViewModel函数?我有一个自定义绑定将jQuery Validate应用于表单,我需要在submitHandler中调用一个函数,但到目前为止我没有尝试过。有人能指出我正确的方向吗?我已经阅读了这些文档,但关于这个问题还不是很清楚。
这是我的自定义敲除绑定
// activate the jQuery Validate on the form
ko.bindingHandlers.validateEmailForm = {
update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
$(element).validate({
errorLabelContainer: $("#updateEmailFormAlert"),
wrapper: 'li',
rules: {
email: {
required: {
depends: function(element) {
return $("#emailConfirm").is(":filled");
}
},
email: true
},
emailConfirm: {
required: {
depends: function(element) {
return $("#email").is(":filled");
}
},
email: true,
equalTo: "#email",
}
},
messages: {
email: {
required: "Email is required",
email: "Please enter a valid email address"
},
emailConfirm: {
required: "Confirm Email is required",
email: "Please enter a valid confirm email address",
equalTo: "Confirm Email must match Email"
}
},
submitHandler: function() {
bindingContext.$root.updateUserEmail;
return false;
}
});
}
};
答案 0 :(得分:0)
好吧,您可以从自定义绑定中轻松访问viewModel。当前上下文的viewModel在viewModel变量中传递,如果您需要访问其他任何内容,bindingContext可以访问所有父绑定上下文,直到$ root。
因此,如果您想从viewModel调用函数,只需执行viewModel.someFunction()
。
看来你已经在submitHandler中做了一些事情(bindingContext.$root.updateUserEmail
)这不是你想要的吗?