如何访问knockout.js中数据绑定到元素的事件

时间:2014-05-23 12:10:28

标签: javascript jquery knockout.js

我的日期控件看起来像这样。

<div class="OnTheMoveFormTextBoxContainer">
                       <input data-bind="value: formatDateTime(ko.unwrap(Started)), css: { validationElement: validateItem(Started, 'Started') }, event: {
change: function(d, e) {
    if (Started != $(e)[0].target.value &amp;&amp; dateWheelShown == true) {
        $data.Started(dateToISO($(e)[0].target.value,'DD/MM/YYYY HH:mm'));
    }
}
 }, id: 'Started' + '_' + Id()" data-onthemove_dateformat="DD/MM/YYYY HH:mm" class="Mobile_DateTimePick ui-input-text ui-body-c ui-corner-all ui-shadow-inset ui-mini" data-mini="true" name="Started" id="scoller1400844006695" readonly="">
</div>

我如何在knockout.js中访问数据绑定事件处理程序,我当前的情况onchange

我正在寻找这样的事情:ko.contextFor($($('.OnTheMoveFormTextBoxContainer')[3]).find('input')[0]).events

1 个答案:

答案 0 :(得分:1)

您可以使用ko.bindingProvider.instance.getBindings

像(未经测试的):

 ko.bindingProvider.instance.getBindings(
              $($('.OnTheMoveFormTextBoxContainer')[3]).find('input').get(0),
              ko.contextFor($($('.OnTheMoveFormTextBoxContainer')[3]).find('input').get(0).$root
 ).event.change

<强>更新 也许更喜欢:     var x = $($('。OnTheMoveFormTextBoxContainer')[3])。find('input')。get(0);

ko.bindingProvider.instance.getBindings(x, ko.contextFor(x)).event

请参阅此帖子Access knockout binding from child element