引导的JavaScript按钮不会显示淘汰赛观察到

问题描述:

我想在引导JavaScript的按钮进行更新,以显示保持在我的视图模型观察到淘汰赛数字的文本。引导的JavaScript按钮不会显示淘汰赛观察到

我可以更新按钮上的文字是,除了可观察到的东西,当我改变它含有可观的,按钮上的文字是不正确的,并显示可观察到的一个功能。

它很容易与小提琴所以这里说明的是一个简单的例子:http://jsfiddle.net/rswailes/JxHwy/

HTML

<button 
    id="download-file" 
    data-loading-text="Updating totals..." 
    data-bind="attr: {'data-complete-text' : 'Download lines: '+total , 
         'data-finished-text' : 'done' }" 
    autocomplete="off" 
    class="btn btn-small download-file" 
    type="button">Download file</button> 

<p> 
Total: <span data-bind="text: total"></span> 
</p> 

JAVASCRIPT

var ViewModel = function(){ 
    var self = this; 
    this.total = ko.observable(); 

    this.loadModel = function(){ 
     $('#download-file').button("loading"); 
     this.total(10); 
     $('#download-file').button("complete"); // this is the line I would like to work but does not work 
     //$('#download-file').button("finished"); // if you uncomment this line you will see this line works fine 
    }; 
}; 


viewModel = new ViewModel(); 
ko.applyBindings(viewModel); 
viewModel.loadModel(); 

谁能告诉我这是为什么发生的,如果什么我想做的可能吗?

编辑:我试过total()建议如下,然后我得到“Download lines: undefined”的按钮。

要获得可观察到的值,就需要调用它像total()功能。

如果你只是通过一个简单的属性/可观察像total内置的绑定将照顾为你做这个。但是,如果在表达式中使用它,则需要将它作为函数自己调用,如"Download lines: " + total()

+0

我也试试,然后我得到的,而不是功能文本“未定义”。我会更新我的问题。 – Rachel 2013-03-11 17:54:28

+2

引导按钮会缓存原始数据值,因此它不会使用您的新值。例如,如果原始值为5:http://jsfiddle.net/rniemeyer/pcTsu/ – 2013-03-11 18:13:45

+0

我接受这一个,因为总()是正确的,但也解释了为什么原始数据值将被保留。 – Rachel 2013-03-12 10:49:51

您应该使用total()来访问observable变量的值。您必须更新您的代码并使用点击式绑定来加载您的模型数据。这里有一个工作小提琴:

http://jsfiddle.net/JxHwy/3/

+0

我曾尝试过使用总量,并得到“未定义”的按钮。谢谢你粘贴工作小提琴。你能解释为什么,如果我把$('#download-file')。button(“loading”)移到this.total(10)之前的行,那么我再次得到“undefined”? (这更接近我在我的真实应用程序中的代码)。 – Rachel 2013-03-11 18:12:28

+0

我想我可能知道 - 你应该使用'的.text(“完成”)'和'的.text(“加载”)',如果你正在试图改变按钮文本,而不是'.button()'做那。 – vapcguy 2015-03-04 05:09:41