Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui jquery按钮、Knockout.js和一个ajax请求_Jquery Ui_Jquery_Knockout.js_Jquery Ui Button - Fatal编程技术网

Jquery ui jquery按钮、Knockout.js和一个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

我正在使用knockout.js和jqueryui按钮。我在下面的按钮上建立了一个自定义绑定。我正在更改单击项上的文本,但我还有其他提交ajax请求的单击。一旦请求完成,将文本设置回原始文本的最佳设计模式是什么。我知道我可以手动执行,或者,将被调用的元素传递给方法,但是是否有一种更为解耦的方法

<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>