1

我希望更新引导 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在按钮上得到了“”。

4

2 回答 2

0

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

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

于 2013-03-11T18:06:35.170 回答
0

要获取 observable 的值,您需要将其作为函数调用,例如total().

如果您只传递一个简单的属性/可观察对象,那么内置绑定将为您完成这项工作total。但是,如果您在表达式中使用它,那么您需要自己将其作为函数调用"Download lines: " + total()

于 2013-03-11T17:52:53.483 回答