在 javascript/backbone 中初始化模型元素
Initialize Model elements in javascript/backbone
我正在从 REST 获取嵌套的 JSON 数据。现在我想在变量中捕获该值。一切正常,但我不知道应该如何初始化该变量。
所以这是我的模型初始化方法。
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: []
或者我根本不需要初始化它。
P.S:逻辑明智的代码片段正在运行。我只想知道在 BACKBONE MODEL
的 initialize
函数中初始化 dropdownData
的正确方法是什么
我建议完全避免在 initialize
方法中初始化 dropdownData
,而是在这里使用 model.defaults。如果将以下内容添加到模型定义中:
defaults: function () {
return {
dropdownData: []
};
},
...然后您可以删除 initialize
方法主体中的所有代码。此更改的结果是实例化模型将具有为 dropdownData
或 提供的值(在实例化时),模型将默认为指定的空数组。
注意这里使用defaults
的函数版本很重要。如果您改为这样做:
defaults: {
dropdownData: []
},
...那么任何未提供 dropdownData
值的实例化模型 将共享 dropdownData
的值。每个实例都将引用完全相同的数组。
我正在从 REST 获取嵌套的 JSON 数据。现在我想在变量中捕获该值。一切正常,但我不知道应该如何初始化该变量。
所以这是我的模型初始化方法。
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: []
或者我根本不需要初始化它。
P.S:逻辑明智的代码片段正在运行。我只想知道在 BACKBONE MODEL
initialize
函数中初始化 dropdownData
的正确方法是什么
我建议完全避免在 initialize
方法中初始化 dropdownData
,而是在这里使用 model.defaults。如果将以下内容添加到模型定义中:
defaults: function () {
return {
dropdownData: []
};
},
...然后您可以删除 initialize
方法主体中的所有代码。此更改的结果是实例化模型将具有为 dropdownData
或 提供的值(在实例化时),模型将默认为指定的空数组。
注意这里使用defaults
的函数版本很重要。如果您改为这样做:
defaults: {
dropdownData: []
},
...那么任何未提供 dropdownData
值的实例化模型 将共享 dropdownData
的值。每个实例都将引用完全相同的数组。