我有一个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
我有什么方法可以获得当前价值吗? knockoutjs是否允许将事件传递到“刷新”功能?只要能够在运行刷新功能时检测到选择了哪个无线电选项,我就会对任何想法持开放态度。
答案 0 :(得分:3)
Knockout将event
对象作为第二个参数(第一个参数是“当前数据”)传递给click
处理函数(您可以在documentation中阅读更多相关信息)
因此以下代码将产生预期结果:
self.refresh = function(data, element){
alert($(element.currentTarget).val());
};
工作JSFiddle。