Как убедиться, что вы не создаете модель дважды, используя историю в backbone.js? - PullRequest
0 голосов
/ 19 января 2012

В моем роутере у меня есть

routes: {
    "create/:type": "create",
    // #create/modeltype
    "diagram/:id": "diagram",
    // #diagram/193
    "": "list"
    //
    },

, тогда у меня есть маршрут создания

    create: function(type) {
        console.log("diagram create " + type.toUpperCase());

        var newDiagram = new Diagram({
            type: type.toUpperCase()
            });

        newDiagram.save({}, {
            success: function(model, response) {
                console.log("save diagram success");
                window.vnb.routers.workspace.navigate("diagram/" + model.get("id"), true);

            },
            error: function(model, response) {
                console.log("error");
                console.log(model);
                console.log(response);
            }
        });

    },

Если кто-то создает модель и затем щелкает обратно, он создает другую модель, я хотел быэтого не произойдет.

1 Ответ

0 голосов
/ 19 января 2012

Вы можете превратить переменную newDiagram в свойство на маршрутизаторе с именем diagram.Затем вы можете создать его экземпляр при первом вызове метода create, и следующие вызовы метода create могут использовать переменную.

Вот пример

create: function(type) {
    console.log("diagram create " + type.toUpperCase());

    if (this.diagram === undefined) {
        this.diagram = new Diagram({
          type: type.toUpperCase()
        });
    }

    this.diagram.save({}, {
        success: function(model, response) {
            console.log("save diagram success");
            window.vnb.routers.workspace.navigate("diagram/" + model.get("id"), true);

        },
        error: function(model, response) {
            console.log("error");
            console.log(model);
            console.log(response);
        }
    });

},
...