2014-01-27 24 views
0

我使用Knockout.js結合通過選擇二,這是提供如下:敲除結合用於選擇二覆蓋現有價值

ko.bindingHandlers.select2 = { 
    init: function (element, valueAccessor, allBindingsAccessor) { 
     var obj = valueAccessor(), 
      allBindings = allBindingsAccessor() 
     $(element).select2(obj); 

     ko.utils.domNodeDisposal.addDisposeCallback(element, function() { 
      $(element).select2('destroy'); 
     }); 
    }, 
    update: function (element, valueAccessor) { 
     $(element).trigger('change'); 
    } 
}; 

隱藏元件上我有一個結合以及:

<input type="hidden" class="bigdrop" id="seriesInput" data-bind="value: seriesID, select2: {minimumInputLength: 4, query: $root.nameQuery, formatResult: $root.ownerFormatResult, formatSelection: $root.ownerFormatSelection }" style="margin-left: 1px; width:340px" /> 

時遇到的問題是在創建時SELECT2結合,它改變在可觀察到的seriesID爲字符串「[對象的對象]」預先存在的值。我相當肯定這是綁定處理程序的問題,但我無法在任何地方找到工作的。有沒有人找到了解決辦法?

回答

-1

確保告訴select如何更新您的observable。因此,當select2更改值時,您需要爲init函數添加更改處理程序。

0

我需要看到更多的代碼,就知道你爲什麼有這個問題,但這裏是你的代碼示例工作正常:http://jsfiddle.net/Y93Wm/

我用這個視圖模型代碼:

ko.applyBindings({ 
    seriesID: ko.observable('series-id'), 
    nameQuery: function(o) { 
     o.callback({ 
      more: false, 
      results: [ 
       { id: "CA", text: "California" }, 
       { id: "AL", text: "Alabama" }, 
       {id: 'AA1', text: 'aaaaabc'}, 
       {id: 'AA2', text: 'aaaaabcd'}, 
       {id: 'AA', text: 'aaaaaa'}, 
       {id:'BB', text: 'bbbbbbb'}] 
     }); 
    }, 
    ownerFormatResult: function(o) { return o.text }, 
    ownerFormatSelection: function(o) { return o.text } 
}); 
+0

我想通,因爲它是返回值與字段標識和名稱的對象,它希望在通過了類似的對象。事實證明,它只是想的ID,所以我只是手動設置的下拉列表中的顯示值與我的formatSelection格式相同。 –