0
私の問題のための実用的な解決策を見つけることができませんでしたが、私はそれが動作するように簡単な方法かもしれませんが、それを把握することはできません。ノックアウトエクステンダでのメソッドの手動呼び出し
私は、表示テキストとユーザーが値を入力できる入力を切り替えるliveEditorというエクステンダーを持っています。入力とテキストエリアでうまく動作しますが、datepickerで管理できませんでした。私はOKボタンをクリックしたとき
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?
});
}
}
};
それは動作します:
<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:
は、ここに私のコード
HTMLを行きます。
ありがとうございました!
リピートをありがとう。 saveModelメソッドでエラーが発生したため、viewModelも送信しなければなりませんでした。メソッドは "this"(stopEditing関数内)には存在しません。 –