0

次のコードを使用して、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>

「Info」タグをクリックすると、ウィジェットに表示されるビューが切り替わるはずです。これは、最初にクリックされたときに正常に機能し、関数 toggleDetails が期待どおりに呼び出されます。2 回目または 3 回クリックしても何も起こらない場合、関数は呼び出されません。

どうしてこれなの?本当にわかりません。

これは私のcofescriptクラスです:

  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
4

1 に答える 1

0

OK、私は自分で解決しました:PIはまだ理由を知りませんが、@accessorメソッドtoggleDetailsをswitchViewに呼び出すフォームを変更すると、驚くほどうまくいきました。誰かが理由を知っていますか?

于 2014-09-19T08:30:36.750 に答える