Backbone 视图中的数据逻辑

Backbone data logic inside view

我不确定在哪里执行为我的视图模板准备数据的操作。目前我有这段代码。

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()。看起来这似乎是错误的,我不确定将这段代码放在哪里。 我应该在我的模型中创建不同的吸气剂还是应该将它们留在我的主视图中。请帮忙

据我所知,"correct" 这样做的方法是将它放在模型中,并在视图中有

getTemplateData: function () {
    return this.model.getTemplateData();
}

编辑

如果一个视图有多个模型(这不应该发生,此时没有进入你的决定)你可以为每个模型设置一个 getTemplateData,并用 [=14 之类的东西调用它们=]:

getTemplateData: function () {
    var data = this.model1.getTemplateData();
    data = $.extend(data, this.model2.getTemplateData());
    return data;
}

但是 恕我直言,您真正应该做的是给每个人自己的观点,其中一个较小,并且打算包含在另一个中。 (即 bigView.$el.append(smallView.el)