1

サーバー要求を成功させるバックボーン モデルがあります。バックボーンのドキュメントで説明されているように、コールバックはバックボーンのトリガー メソッドを使用して、関連付けられたビューでイベントをトリガーし、トリガー メソッドの 2 番目のパラメーターとしてサーバー要求からの解析された json 応答を渡します。ビューでは、イベントは render メソッドをトリガーしますが、応答オブジェクトはビューで null です。このエラーをスローしています

Uncaught TypeError: Cannot read property 'word' of null 

誰かが私が間違っているかもしれないことを見ることができますか?

モデルからのサーバー要求

  new: function() {
      var _this = this;
       console.log("new function of model"); 

      $.ajax({
        url: "/gamestart",
        type: "GET",
        success: function(response) {
          console.log(response);
          var json = $.parseJSON(response);

          _this.set({lost: false});
          _this.set({win: false});
          _this.trigger("gameStartedEvent", json);
        }
      })
    },

render メソッドをトリガーしてレスポンスをレンダリングする、ビューの初期化メソッド内のイベント

this.model.on("gameStartedEvent", this.render, this);

レスポンスが null の render メソッド

render: function(response) {
      $("#hint").show();
      console.log(response); 
      var html = this.template({characters: response.word});
      this.el.hide();
      this.el.html(html).show();
    },

重要な場合は、ビューがモデルでインスタンス化されていることに注意してください

var word_view = new WordView({model: game})

アップデート

実はここでエラーが発生しています。応答は正常に返されていますが、正しく解析していません。コンソールを確認すると、変数 json が null です。私が間違っていることがわかりますか?

 var json = $.parseJSON(response);
 console.log(json)

応答

Object {word: Array[6]}
word: Array[6]
__proto__: Object
4

1 に答える 1

0

実際には、応答オブジェクトでparseJSONを呼び出す必要はありませんでした。応答オブジェクトから直接wordプロパティを取得できるため、トリガーする2番目の引数として応答オブジェクトを渡し、response.wordビューで呼び出しました。

 $.ajax({
        url: "/gamestart",
        type: "GET",
        success: function(response) {
          console.log(response.word);
          var json = $.parseJSON(response);    ####unnecessary to parseJSON here
          console.log(json);

          _this.set({lost: false});
          _this.set({win: false});
          _this.trigger("gameStartedEvent", response);
        }
      })
    },
于 2013-01-13T07:28:14.823 に答える