我从REST获取嵌套的JSON数据。现在,我想在一个变量中捕获该值。一切正常,但我不知道该如何初始化该变量。
所以这是我的Model的初始化方法。
initialize: function() {
var self = this;
if (!this.get('dropdownData')) {
this.set({
dropdownData: []
});
}
}
}
AJAX通话:
fetchDropdown: function(data) {
var self = this;
var d = $.Deferred();
var dropdownRequest = $.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: this.urlRoot,
data: JSON.stringify(data)
});
dropdownRequest.done(function(data)
{
self.set({
dropdownData: data
});
console.log("JSON SUCCESS!! YAY!!");
d.resolve();
});
现在dropdownData
应该初始化为,dropdownData: {} or dropdownData: []
否则我根本不需要初始化。
PS:逻辑明智的代码段正常工作。我只想知道dropdownData
在initialize
函数中初始化的正确方法是什么BACKBONE MODEL
我建议避免完全dropdownData
在initialize
方法中初始化,而在此处使用model.defaults。如果将以下内容添加到模型定义中:
defaults: function () {
return {
dropdownData: []
};
},
...然后您可以删除initialize
方法主体中的所有代码。更改的结果是,实例化的模型将具有(在实例化时)提供的值,dropdownData
或者该模型将默认为指定的空数组。
请注意,使用defaults
here的功能版本很重要。如果您要这样做,请执行以下操作:
defaults: {
dropdownData: []
},
...然后,任何未提供的值的dropdownData
实例化模型都将共享的值dropdownData
。每个实例将引用完全相同的数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句