我已经定义了我的模型和它的默认变量;然而,每当我试图在模型本身内部使用这些变量中的任何一个时,它们的值都被设置为“未定义”。
JAWeatherWatch.module('Cities', function(Cities, JAWeatherWatch, Backbone, Marionette){
/* Cities
* This model is used to model the datat retued by the open weather api
* for each individual city in jamaica
*/
Cities.City = Backbone.Model.extend({
defaults:{
// stores my api key as well the required query string to add to the request
apiKey: '&APPID=84cb7efaf4ac2947aa6381637904ee5e',
country:'jamaica',
parishName: false
},
url:'http://api.openweathermap.org/data/2.5/weather?q=' + this.parishName + "," + this.country + this.apiKey,
initialize: function(){
console.log(this.country); // => 'undefined'
// todo: get json data from api
}
});
});
var test = new JAWeatherWatch.Cities.City({parishName:'kingston'});
console.log(test.get('country')) // => 'jamaica'
奇怪的是,在模型示例化之后,它们的行为和预期的一样(即返回正确的值)。
1条答案
按热度按时间b4lqfgs41#
你不能使用
this.country
,因为backbone把模型的属性存储在模型中一个名为attributes
的键中,所以理论上可以使用this.attributes.country来访问它们,但是请不要这样做,模型的属性应该使用model.get()
来访问因此,在您的情况下,它将是
this.get( "country" )
如果您想了解更多信息,请参阅Backbone文档。http://backbonejs.org/#Model-get