【问题标题】:Keep data from a view to another view with BackboneJS使用 BackboneJS 将数据从一个视图保存到另一个视图
【发布时间】:2013-05-23 01:43:14
【问题描述】:

我想使用 BackboneJS 将信息从一个视图保存到另一个视图。

例如,我在页面#home,我要去页面#message(使用导航功能,或者直接通过更改#后面的URL),但我想保留来自页面#home的模型的用户数据,并将它们显示在页面#message中。

模型由用户(使用表单)设置,而不是来自服务器/数据库。

我真的不知道保存这些信息的最佳解决方案是什么。

一些代码:

view1.js:

define([
    'backbone',
    'underscore',
    'app',
    'text!../../templates/template1.html',
    '../../models/model1',
    ],
    function (Backbone, _, app, myTemplate1, myModel1) {

        'use strict';

        var myView1 = Backbone.View.extend({

            model: new myModel1(),
            template: myTemplate1,
            initialize: function() {
                //
            }
        });
        return myView1;

    }
);

view2.js:

define([
    'backbone',
    'underscore',
    'app',
    'text!../../templates/template2.html',
    '../../models/model2',
    ],
    function (Backbone, _, app, myTemplate2, myModel2) {

        'use strict';

        var myView2 = Backbone.View.extend({

            model: new myModel2(),
            template: myTemplate2,
            initialize: function() {
                //How to access data from the model1 here???
            }
        });
        return myView2;

    }
);

谢谢。

【问题讨论】:

  • 这就是模型的用途。保留您的数据。除非发生实际导航(而不是使用历史 API),否则不需要使用 localStorage 或 Cookie。
  • 我的问题是:那如何访问模型呢?通过将模型对象保存在全局变量中?
  • 什么意思?这是一个您可以访问的 JavaScript 变量。我建议您查看addyosmani.github.io/backbone-fundamentals 这是一本免费书籍,查看示例/设计。
  • 已编辑,添加了一些代码。

标签: javascript backbone.js local-storage


【解决方案1】:

让您的路由器从 view1 获取模型(也许添加一个 view.getModel()` 方法)并将其作为构造函数选项传递给 view2。

【讨论】:

    【解决方案2】:

    我建议您使用 appRouter 将模型传递给 view1,但在 approuter 中本地“存储”模型。

    然后,当您转到 #message 视图时,您还可以将模型传递到那里(或者如果它尚不存在,则创建一个)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多