数据事件点击只调用一次,为什么?

时间:2014-09-19 08:04:29

标签: dashing batman.js

我在Shopify Dashing中使用以下代码制作自定义小部件:

<div class="main">
  <div id="bar">
     <a href="Info" data-event-click="toggleDetails">Info</a>
     </div>
  <div id="summary" data-bind="summary"></div>
  <div id="info" data-bind="info"></div>

  <h2 data-bind="more"></h3>
</div>

当&#34;信息&#34;单击标记它应该切换小部件中显示的视图。这在第一次单击时工作正常,并且按预期调用函数toggleDetails。当第二次或第三次点击它但没有任何反应时,永远不会调用该函数。

这是为什么?我真的不明白。

这是我的coffescript课程:

  1 class Dashing.Toggle extends Dashing.Widget
  2 
  3   ready: ->
  4     # This is fired when the widget is done being rendered
  5     #@showDetails = false
  6     @showSummary = true
  7     @initiateView()
  8 
  9   onData: (data) ->
 10     # Handle incoming data
 11     # You can access the html node of this widget with `@node`
 12     # Example: $(@node).fadeOut().fadeIn() will make the node flash each time data comes in.
 13 
 14 
 15   @accessor 'toggleDetails', ->
 16     @switchView()
 17     console.log "toggling 1"
 18 
 19   initiateView: ->
 20     @summaryView().show()
 21     @infoView().hide()
 22 
 23   switchView: ->
 24     console.log "Switching"
 25     if @showSummary
 26       @summaryView().fadeOut @animationLength()
 27       @infoView().fadeIn @animationLength()
 28       @showSummary = false
 29     else
 30       @infoView().fadeOut @animationLength()
 31       @summaryView().fadeIn @animationLength()
 32       @showSummary = true
 33 
 34   summaryView: ->
 35     console.log "getting summary view"
 36     $(@node).find("#summary")
 37 
 38   infoView: ->
 39     console.log "getting info view"
 40     $(@node).find("#info")
 41 
 42   animationLength: ->
 43     1000

1 个答案:

答案 0 :(得分:0)

好的,我自己就解决了这个问题:P我仍然不知道为什么,但改变形式调用@accessor方法toggleDetails到switchView工作奇迹。有谁知道为什么?