gpt4 book ai didi

javascript - 手动调用 knockout 扩展程序中的方法

转载 作者:行者123 更新时间:2023-12-03 07:06:47 24 4
gpt4 key购买 nike

我找不到任何解决我的问题的方法,但是我知道这可能是使其正常工作的一个微不足道的方法,但我无法弄清楚。

我有一个名为 liveEditor 的扩展程序,它可以在显示文本和用户可以输入值的输入之间切换。它与输入和文本区域配合得很好,但我无法使用日期选择器来管理它。

这是我的代码

HTML:

<div data-bind="liveEditor: Date">
<span class="view" data-bind="text: Date, event: {click: Date.edit}">15.04.2016</span>
<span data-bind="event: { click: Date.stopEditing }" class="ok"></span>
<input value="15.04.2016" data-bind="datetime: Date, event: {blur: Date.stopEditing}" />
</div>

JS:

ko.extenders.liveEditor = function (target) {
target.editing = ko.observable(false);
target.edit = function () {
target.editing(true);
};

target.stopEditing = function () {
target.editing(false);

//save
this.saveModel(); //run a method on viewmodel
};
return target;
};

ko.bindingHandlers.datetime = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext){
var value = valueAccessor();
var $el = $(element);

if (ko.isObservable( value )){

$el.data('kendoDatePicker').on('close', function(e,dataItem){
// what should I write here to call a stopEditing method?
});
}
}
};

当我点击“确定”按钮时它就起作用了。

预先感谢您的帮助!

最佳答案

what should I write here to call a stopEditing method?

可观察值可从 valueAccessor() 获得,因此:

valueAccessor().stopEditing();

这将在事件发生时访问它。如果您必须像调用 init 时那样使用该值,那么您将在 avlue 中关闭该值,因此它将是 value.stopEditing( )

还有另外两种选择(但我想我会这样做):

  • 您可以从 allBindings 访问 events 绑定(bind),然后获取其 blur 绑定(bind)并调用它
  • 您可以在输入上触发模糊事件

关于javascript - 手动调用 knockout 扩展程序中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36791425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com