ユーザーがモーダルポップアップを使用してアイテムを更新できるようにするknockoutjsモデルを使用してWebページを作成しようとしています。モーダルには、jQueryフェイスボックスプラグインを使用したいと思います-http ://defunkt.io/facebox/
アイテムを2回更新しようとするまで機能する、進行中のデモがあります。更新する最初のアイテムは正常に保存されますが、その後、バインディングが失われるようです。他の質問の例をfaceboxプラグインに合わせて調整しようとしましたが、正しく理解できないようです。
私はこのように定義されたカスタムバインディングハンドラーを使用しています:-
ko.bindingHandlers.modal = {
init: function(element, valueAccessor, allBindingsAccessor) {
var allBindings = allBindingsAccessor();
var $element = $(element);
$element.addClass('hide modal');
if (allBindings.modalOptions) {
if (allBindings.modalOptions.beforeClose) {
$element.on('hide', function() {
return allBindings.modalOptions.beforeClose();
});
}
}
return ko.bindingHandlers['with'].init.apply(this, arguments);
},
update: function(element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
var returnValue = ko.bindingHandlers['with'].update.apply(this, arguments);
if (value) {
$.facebox(element);
} else {
$(document).trigger('close.facebox');
}
return returnValue;
}
};
私のノックアウトモデルには、モーダルによって編集された選択されたアイテムを格納する変数と、それを更新/保存/キャンセルする関数があります
self.editingMapmarker = ko.observable();
self.editMapmarker = function(mapmarker) {
self.editingMapmarker(mapmarker);
self.editingMapmarker().reset();
};
self.saveMapmarker = function() {
self.editingMapmarker().accept();
self.editingMapmarker(undefined);
}
self.cancelSaveMapmarker = function() {
self.editingMapmarker(undefined);
}
私はこれまでのところ私の仕事のJsfiddleを持っています-http: //jsfiddle.net/juBxs/
誰かが最初の保存後にバインディングを持続させるのを手伝ってもらえますか?