2013-10-11 46 views
2

我有一个按键的自定义绑定。当我调用绑定属性时,它不接受我的事件参数。就我而言,我的财产是一个我想用自己的事件参数激发的功能。是这样的可能吗?在下面的示例中,值未定义,但是如何将值传递给调用方(viewModel.onKeyPress)?在Kendo的自定义绑定中添加事件参数?

<div id="body"> 
    <input data-role="combobox" data-bind="keyPress: onKeyPress" /> 
    <div id="output"></div> 
</div> 
<script> 
    kendo.data.binders.widget.keyPress = kendo.data.Binder.extend({ 
    init: function (element, bindings, options) { 
     kendo.data.Binder.fn.init.call(this, element, bindings, options); 
     var binding = this.bindings.keyPress; 
     $(element.input).bind("keypress", function(e) { 
      var values = { a: 1, b: 2, c: 3 }; 
      binding.get(e, values); //DOESN'T WORK! 
     }); 
    }, 
    refresh: function() { } 
    }); 

    var viewModel = kendo.observable({ 
    onKeyPress: function (e, values) { 
     $("#output").append("<div>keyPress (see console.log)</div>"); 
     console.log(e); 
     console.log(values); 
    } 
    }); 

    kendo.bind("#body", viewModel); 
</script> 

http://jsfiddle.net/jpKNr/58/

回答

2

的binding.get()调用将调用该函数没有传递给它的任何参数。您可以使用下面的解决方法:

kendo.data.binders.widget.keyPress = kendo.data.Binder.extend({ 
    init: function (element, bindings, options) { 
     kendo.data.Binder.fn.init.call(this, element, bindings, options); 
     var binding = this.bindings.keyPress; 

     var method = binding.source.get(binding.path); 

     $(element.input).bind("keypress", function(e) { 
      var values = { a: 1, b: 2, c: 3 }; 
      method.call(binding.source, e, values); 
     }); 
    }, 
    refresh: function() { } 
    }); 

这里有一个现场演示:http://jsbin.com/eriWOq/1/edit

+0

辉煌 - 它精美的作品! – TruMan1

相关问题