2017-08-01 9 views
0

バックボーンでrequirejsを使用しています。スクリプトはエラーなく実行されますが、モデル .fetch()はモデルを更新しません。 BACKBONE.JSための2つのファイルです: -バックボーンフェッチでモデルが更新されない

私はpageElements.jsで

'use strict'; 


require(['pageElements'],function(pageElements){ 

    $(document).ready(function() { 

     var country = new pageElements.country(); 

     country.fetch({ 

     success: function(e){ 

       console.log(country.get('areaLevelZeroID')); // returns undefined 

      } 

     }); 

    }); 

}); 

を持ってmain.jsで

私はparse関数が正しい値を返している

define(function() { 

    var country = Backbone.Model.extend({ 

     url : 'resources/js/backBoneSandBox/countries.php', 

     parse: function(data){ 

      newData = JSON.parse(data); 
      console.log(newData.areaLevelZeroID); // returns 1 
      return data; 


      } 

    }); 

return (country); 

}); 

を持っていますが、モデルを更新しません。

リソース/のJS/backBoneSandBox/countries.phpテストし、私は本当に簡単な何かが欠けする必要がありますが、私はちょうど何を参照することはできませんJSON文字列

{"areaLevelZeroID":"1","areaLevelZeroName":"Afghanistan"} 

を返しています。あなたが提供できるアドバイスをありがとうございます。

+1

なぜあなた自身の 'parse'関数を指定していますか?あなたの '.php'はJSONを既に返しています。あなたは' parse'関数でJSONとして再解釈しています - なぜですか?あなたは 'parse'をすべて一緒に削除して、もう一度やり直せますか? – Mjh

+0

これを見ていただきありがとうございます。まだ違いはありません。 – mssbcons

+0

'success'関数でこのコードを使用するとどうなりますか?' console.log(e.toJSON()); '? – Mjh

答えて

0

一般的には、フローはfetch - parse - set - success handlerです。 あなたのケースでは、サーバーから文字列レスポンスを受け取るので、モデルでsetを呼び出す前にJSONに解析する必要があります。その理由は、あなたが持っていたreturn newData;

関連する問題