Twitter引导程序与Knockoutjs - 单选按钮值

时间:2012-12-12 17:22:11

标签: twitter-bootstrap knockout.js jquery

我有一个ASP.Net MVC4网站,它使用Twitter引导程序和Knockoutjs。其中一个要求是当用户在某些选项之间切换时刷新视图模型。为此,我设置了以下单选按钮

<div id = "myradio" class="btn-group" data-toggle="buttons-radio">
  <button value="1" type="button" class="btn btn-primary active" data-bind="click: refresh">1</button>
  <button value="2" type="button" class="btn btn-primary" data-bind="click: refresh">2</button>
  <button value="3" type="button" class="btn btn-primary" data-bind="click: refresh">3</button>
</div>​

我的Knockoutjs视图模型是

function ViewModel() {
    var self = this;

    //this function is called when the radio button is clicked
    self.refresh = function(){
    alert($('#myradio > button.active').val());
    };
}

我遇到的问题是,click事件过早地触发并给出了单选按钮的前一个值而不是当前值。为了演示这个问题,我设置了一个jsfiddle

http://jsfiddle.net/73yMR/2/

我有什么方法可以获得当前价值吗? knockoutjs是否允许将事件传递到“刷新”功能?只要能够在运行刷新功能时检测到选择了哪个无线电选项,我就会对任何想法持开放态度。

1 个答案:

答案 0 :(得分:3)

Knockout将event对象作为第二个参数(第一个参数是“当前数据”)传递给click处理函数(您可以在documentation中阅读更多相关信息)

因此以下代码将产生预期结果:

self.refresh = function(data, element){
    alert($(element.currentTarget).val());
};

工作JSFiddle