我不知道在哪里执行为我的视图模板准备数据的操作。目前我有这段代码。
getTemplateData: function () {
var inventoryStatus = selectedDevice.get("inventoryStatus"),
data = {},
statusName,
inventoryDate;
statusName = getConfigValue("pdp", "statusMap", inventoryStatus);
data.message = getConfigValue("pdp", "statusMessage", statusName);
data.className = "";
data.dataAttribute = null;
data.tooltipValue = null;
data.displayError = false;
var redirectCode = (allDevices.get("thirdPartyRedirectCode") !== null) ? allDevices.get("thirdPartyRedirectCode") : "";
if (redirectCode) {
if (redirectCode === 9999) {
data.buttonDisabled = false;
data.buttonText = "Design Yours";
} else if (redirectCode === 9998) {
data.buttonDisabled = true;
data.buttonText = "Design Yours";
}
return false;
}
switch(inventoryStatus) {
case 1001: //Out of Stock
data.buttonDisabled = true;
data.displayError = true;
break;
case 1002: //Pre Order
data.buttonDisabled = false;
break;
}
return data;
}
这个getTemplateData()我在视图的render函数中调用。它的外观似乎有误,我不确定在哪里放置此代码。 我应该在我的模型中创建不同的getter,还是应该将它们放在我的主视图中。请帮忙。
答案 0 :(得分:2)
据我所知,“正确”的做法是把它放在模型中,并在视图中
getTemplateData: function () {
return this.model.getTemplateData();
}
编辑
如果某个视图有多个模型(不应该发生这种情况,而不会立即进入您的决策),您可以为每个模型设置getTemplateData
,并使用extend之类的方式调用它们:
getTemplateData: function () {
var data = this.model1.getTemplateData();
data = $.extend(data, this.model2.getTemplateData());
return data;
}
<强> BUT 强>
你真正应该做的是,恕我直言,给出每个人自己的观点,其中一个较小,并打算包括在另一个中。 (即bigView.$el.append(smallView.el)
)