Knockout Databind事件两次发射

时间:2014-06-26 10:46:54

标签: knockout.js

我渲染选项选择包括更改事件。渲染事件后两次火灾......我无法理解为什么......

  <select id="@Model.ID)" 
          data-bind = "@string.Format("
          options: groupItems({0}), 
          optionsText : 'description',  
          optionsValue : 'id', 
          optionsAfterRender: afterDropDownRender, 
          value : selectedItem({0}),  
          event: {{ change: selectionChanged }}", Model.GroupID)"></select>

The Event&#34; selectionChanged&#34;在更改选择后发射两次。

3 个答案:

答案 0 :(得分:1)

尝试找出客户端上呈现的内容。它应该看起来像:

<select id="IdFromServer" data-bind = "options: groupItems(2),                     
          optionsText: 'description',   
          optionsValue : 'id',                
          value : selectedItem(2),  
          event: { change: selectionChanged }"></select>

Fiddle

答案 1 :(得分:0)

我认为你的语法不太正确。您只需要将选项绑定到groupItems而不是groupItems({0})。所选项目也是如此。生成的html应为:

<select data-bind ="options: groupItems, 
          optionsText : 'description',  
          optionsValue : 'id', 
          optionsAfterRender: afterDropDownRender, 
          value : selectedItem,  
          event: { change: selectionChanged }"></select>

http://jsfiddle.net/MXMv5/

答案 2 :(得分:0)

好的,找到了原因,虽然不太清楚为什么......

向下钻取并遗漏

value: selectedItem(2),

事件不会发射两次..

没有潜入“selectedItem”:)