Jquery ui jquery按钮、Knockout.js和一个ajax请求
我正在使用knockout.js和jqueryui按钮。我在下面的按钮上建立了一个自定义绑定。我正在更改单击项上的文本,但我还有其他提交ajax请求的单击。一旦请求完成,将文本设置回原始文本的最佳设计模式是什么。我知道我可以手动执行,或者,将被调用的元素传递给方法,但是是否有一种更为解耦的方法Jquery ui jquery按钮、Knockout.js和一个ajax请求,jquery-ui,jquery,knockout.js,jquery-ui-button,Jquery Ui,Jquery,Knockout.js,Jquery Ui Button,我正在使用knockout.js和jqueryui按钮。我在下面的按钮上建立了一个自定义绑定。我正在更改单击项上的文本,但我还有其他提交ajax请求的单击。一旦请求完成,将文本设置回原始文本的最佳设计模式是什么。我知道我可以手动执行,或者,将被调用的元素传递给方法,但是是否有一种更为解耦的方法 <button type="submit" data-bind="button: { text: 'login', pressed: 'authenticating...' }, click: fu
<button type="submit" data-bind="button: { text: 'login', pressed: 'authenticating...' }, click: function() { site.ajaxRequest(); }"></button>
ko.bindingHandlers.button = {
init: function (element, valueAccessor) {
var binding = ko.utils.unwrapObservable(valueAccessor());
$(element).button({ label: binding.text }).click(function () {
$(this).button({ label: binding.pressed });
});
}
};
ko.bindingHandlers.button={
init:函数(元素、值访问器){
var binding=ko.utils.unwrapobbservable(valueAccessor());
$(元素)。按钮({label:binding.text})。单击(函数(){
$(this).button({label:binding.pressed});
});
}
};
我不建议将按钮绑定到硬编码文本。相反,我建议将jQuery UI按钮绑定到可观察对象,然后适当地更新该可观察对象:
第一个代码段是一个绑定,可用于更新我使用的jQueryUI按钮。(psuedo代码)
接下来,这里是您的绑定的外观。这假设您的模型上有一个名为textObservable的可观察对象
<button type="submit" data-bind="button: {buttonText: textObservable, click: site.ajaxRequest"></button>
最后,在ajaxRequest方法中,在发出AJAX请求之前,需要将textObservable更新为“Authentication”。在ajax调用的成功处理程序中,您需要将textObservable更新为初始值。有意义。但是如果页面上有多个按钮,我就必须为视图模型中的每个按钮添加一个项目。我想我可以这样做,但我更愿意用元素保持静态ui显示,但那只是我自己。我会试试看是否喜欢。
<button type="submit" data-bind="button: {buttonText: textObservable, click: site.ajaxRequest"></button>