2017-08-01 127 views
0

我正在使用requirejs與骨幹。該腳本無誤地運行,但模型 .fetch()不更新模型。這兩個文件Backbone.js的是: -骨幹提取沒有更新模型

在main.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 

      } 

     }); 

    }); 

}); 

在pageElements.js我

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。 在你的情況下,你從服務器收到字符串響應,所以你必須解析它到JSON,然後在模型上調用set。這就是爲什麼你必須return newData;