2013-04-21 85 views

回答

3

你可以使用select元素的selectedIndex屬性來找出當前選定的選項。

如果你想要把這個綁定處理程序,你可以是這樣的:

ko.bindingHandlers.selectedIndex = { 
    init: function(element, valueAccessor) { 
     ko.utils.registerEventHandler(element, "change", function() { 
      var value = valueAccessor(); 
      if (ko.isWriteableObservable(value)) { 
       value(element.selectedIndex); 
      } 
     }); 
    } 
}; 

這是假設你是結合其對可觀察到的(如果你要綁定對非可觀察到的,然後它需要多一點的代碼),你可以使用它像:

<select id="lstEntreprisesCbx" data-bind="options:Entreprises, 
         optionsText: 'NomEntreprise', 
         optionsCaption: '-- Nouvelle Entreprise --', 
         selectedIndex: myIndex"> 
</select> 

這裏有一個例子:http://jsfiddle.net/rniemeyer/K6SZQ/

更新

我已經讀過這個問題,因爲它特別想要selectedIndex當前選定的值,這可能是錯誤的。如果您確實想獲取當前所選對象的id之類的內容,則可以使用value綁定以及optionsValue選項。它看起來像:

因此,您所指定的value更新約束,而在optionsValue結合使用(字符串)屬性,該屬性值。如果您省略了optionsValue,那麼它將用整個對象填充您的value。如果你的選擇數組只是原始值,這也是你會用到的。

樣品:http://jsfiddle.net/rniemeyer/3LyLs/

+0

非常感謝您的幫助=)。 – Vileps 2013-04-21 22:05:52

+0

爲什麼不使用'value'綁定?我在這裏錯過了什麼嗎? – 2013-04-22 14:44:00

+0

我想我以爲他特別想要項目的'selectedIndex'。重新閱讀這個問題,也許這不一定是真的。將更新響應。 – 2013-04-22 15:03:00