2012-11-28 36 views
1

我想創建一個網頁與knockoutjs模型,允許用戶使用模式彈出窗口更新項目。對於模式,我想使用jQuery facebox插件 - http://defunkt.io/facebox/knockoutjs與facebox模式

我有一個正在進行的演示工作,直到第二次嘗試更新項目。你更新的第一個項目保存良好,但綁定似乎丟失。我試圖修改其他問題的示例以適應facebox插件,但似乎無法做到。

我使用這樣定義的自定義bindinghandler: -

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/

誰能幫我把結合堅持的先救後?

回答

1

兩個選項:

看起來像你的自定義綁定將在KO 2.2妥善已經工作:http://jsfiddle.net/rniemeyer/Cpvtd/

如果您無法升級到2.2,那麼你應該能夠切換with的順序更新和在更新功能中打開/關閉facebox

update: function(element, valueAccessor) { 
    var value = ko.utils.unwrapObservable(valueAccessor()); 

    if (value) { 
     $.facebox(element); 
    } else { 
     $(document).trigger('close.facebox'); 
    } 


    return ko.bindingHandlers['with'].update.apply(this, arguments); 
} 

樣品在這裏:http://jsfiddle.net/rniemeyer/wsNZa/

+0

我已經升級到2.2 KO,它的工作現在謝謝。 – user1573618