バックボーンビューのコンテキスト

トムハモンド

私はバックボーンをよりよく学ぶための基本的な調査アプリの作成に取り組んでいます。ユーザーが特定の調査を1回だけ受けることができるように取り組んでいます。私はこれをレール側に構築しましたが、同じユーザーが同じ調査を再度実行しようとするとエラーが返されます。

成功関数とエラー関数は正しく呼び出されます。私が遭遇している問題は、@ saveSurveyを呼び出そうとしたときです。問題は、成功関数のコンテキストでのthis.saveSurveyが実際にはビューのコンテキストではないことだと確信しています。この関数を実際に呼び出すためにコンテキストを渡す方法はありますか?

class SurveyMe.Views.SurveyShow extends Backbone.View

  template: JST['templates/surveys/survey_show']

  initialize: ->
    @model.on('all', @render, this)
    @questionNumber = 0
    @questionLimit = @model.get("questions").length - 1
    @completion = new SurveyMe.Models.Completion
    #@listenTo(@completion,'change', @saveSurvey)

  render: ->
    $(@el).html(@template(survey: @model, questionNumber: @questionNumber))
    this

  back: ->
    if @questionNumber <= @questionLimit and @questionNumber > 0
      @questionNumber -= 1
      $("#container").html(@render().el)
    else
      Backbone.history.navigate("surveys",trigger: true)

  events:
      'click #answer': 'updateQuestion'
      'click #back': 'back'

  updateQuestion: ->
    choice = new SurveyMe.Models.Choice
    choice.save(
      choice:
        appuser_id: Cookie.get('survey_user_id')
        question_id: @model.get('questions')[@questionNumber]["id"]
        answer_id: "4"
      )
    if @questionNumber < @questionLimit
      @questionNumber += 1
      $("#container").html(@render().el)
      @renderQuestion()
    else
      @completion.set(survey_id: @model.get('id'), appuser_id: Cookie.get('survey_user_id'))
      @completion.save null,
        success: ->
          @saveSurvey()
        error: ->
          alert('fail fail fail')
      Backbone.history.navigate("surveys",trigger: true)

  renderQuestion: ->
    question = new SurveyMe.Models.Question(id: @model.get("questions")[@questionNumber]["id"])
    questionView = new SurveyMe.Views.Question(model: question)
    $('#questions').html(questionView.render().el)

  saveSurvey: ->
    alert('great success')
    @model.save(
      number_taken: @model.get('number_taken') + 1
    )
ドクターオレンジ

これはCoffeeScriptの問題です。

成功コールバックの=>コンテキストを維持するには、太い矢印()構文を使用する必要がありthisます。

  @completion.save null,
    # Use the fat arrow here "=>" instead of the skinny arrow "->"
    success: =>
      @saveSurvey()
    # You would also need to do it here if you planned to use @ to 
    # refer to the parent context in the error callback
    error: ->
      alert('fail fail fail')

@親関数のコンテキストを参照するために関数内で使用する場合は常に、これを行う必要があります。

CoffeeScriptは、関数のスコープ@を維持するための便利なthis機能として、太い矢印とショートカットを提供します。舞台裏では_this = this、通常の古いJavaScriptで一般的に行うすべてのタイプの処理を実行します。

関連するドキュメントは次のとおりです:http//coffeescript.org/#fat-arrow

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

バックボーンビューレンダリング機能のコンテキストの問題

分類Dev

モバイルビューのテキストボックスとボタンのレベル

分類Dev

ビューからコントローラーにテキストボックスの値を渡す

分類Dev

コンボボックスlwuitのキーバリュー?

分類Dev

テキストボックス、ボタン、チェックリストボックスのグリッドビューなど、mvc 2でaspサーバーコントロールを使用する方法は?

分類Dev

Razorビューのテキストボックスにモデルをバインドする

分類Dev

コンポーネント/統合テストバックボーンビューなど

分類Dev

リストビューのチェックボックスのデータコンテキストとの闘い-Mvvmパターン

分類Dev

テキストボックスからリストビューにコンテンツを追加する

分類Dev

ネストされたビューのバックボーン

分類Dev

リストのバックボーンサブビュー

分類Dev

ビジュアルコンポーザーテキストブロックのバグ

分類Dev

ストーリーボードのバッテリーアイコンの下にコレクションビューセルを移動する方法

分類Dev

リストビューのチェックボックスをオンにしたときに、コンテキストアクションバーをアクティブにしないのはなぜですか?

分類Dev

ビュークラスでのAndroidDependencyInjectedコンテキスト

分類Dev

VBA-PowerPointマクロ-アウトラインビューにテキストボックスのコンテンツを追加

分類Dev

リストビュー内のコンボボックスをObservableCollection <string>にバインドする

分類Dev

javafxコンボボックスのコンテキストメニューが表示されない

分類Dev

Asp.net-コードビハインドでグリッドビューのテキストボックスフィールドをラベルに変更

分類Dev

Androidコンテンツボックス-カスタムリストビュー

分類Dev

ボタンクリック後にテキストビューにHTMLコードを表示する

分類Dev

テキストボックスからDatePickerビューカレンダー

分類Dev

wpfはテキストボックスのコンテキストメニューを拡張します

分類Dev

コンボボックスをテキストボックスにデータバインディング

分類Dev

動的テキストボックスのリストを作成し、コントローラーを介してビューに戻します

分類Dev

を使用してリストビューIDラップコンテンツの下にテキストビューとボタンを追加できません

分類Dev

グリッドビュー内のボタンをクリックした後にテキストボックスのテキストを変更する方法

分類Dev

ボタンのロングクリックのコンテキストメニュー?

分類Dev

コンボボックスのテキストのフォーマット

Related 関連記事

  1. 1

    バックボーンビューレンダリング機能のコンテキストの問題

  2. 2

    モバイルビューのテキストボックスとボタンのレベル

  3. 3

    ビューからコントローラーにテキストボックスの値を渡す

  4. 4

    コンボボックスlwuitのキーバリュー?

  5. 5

    テキストボックス、ボタン、チェックリストボックスのグリッドビューなど、mvc 2でaspサーバーコントロールを使用する方法は?

  6. 6

    Razorビューのテキストボックスにモデルをバインドする

  7. 7

    コンポーネント/統合テストバックボーンビューなど

  8. 8

    リストビューのチェックボックスのデータコンテキストとの闘い-Mvvmパターン

  9. 9

    テキストボックスからリストビューにコンテンツを追加する

  10. 10

    ネストされたビューのバックボーン

  11. 11

    リストのバックボーンサブビュー

  12. 12

    ビジュアルコンポーザーテキストブロックのバグ

  13. 13

    ストーリーボードのバッテリーアイコンの下にコレクションビューセルを移動する方法

  14. 14

    リストビューのチェックボックスをオンにしたときに、コンテキストアクションバーをアクティブにしないのはなぜですか?

  15. 15

    ビュークラスでのAndroidDependencyInjectedコンテキスト

  16. 16

    VBA-PowerPointマクロ-アウトラインビューにテキストボックスのコンテンツを追加

  17. 17

    リストビュー内のコンボボックスをObservableCollection <string>にバインドする

  18. 18

    javafxコンボボックスのコンテキストメニューが表示されない

  19. 19

    Asp.net-コードビハインドでグリッドビューのテキストボックスフィールドをラベルに変更

  20. 20

    Androidコンテンツボックス-カスタムリストビュー

  21. 21

    ボタンクリック後にテキストビューにHTMLコードを表示する

  22. 22

    テキストボックスからDatePickerビューカレンダー

  23. 23

    wpfはテキストボックスのコンテキストメニューを拡張します

  24. 24

    コンボボックスをテキストボックスにデータバインディング

  25. 25

    動的テキストボックスのリストを作成し、コントローラーを介してビューに戻します

  26. 26

    を使用してリストビューIDラップコンテンツの下にテキストビューとボタンを追加できません

  27. 27

    グリッドビュー内のボタンをクリックした後にテキストボックスのテキストを変更する方法

  28. 28

    ボタンのロングクリックのコンテキストメニュー?

  29. 29

    コンボボックスのテキストのフォーマット

ホットタグ

アーカイブ