骨干模型,添加全局属性,该属性将存在于模型的每个实例上

时间:2014-04-02 11:58:17

标签: javascript backbone.js

如何将属性设置为我的骨干模型并保持其全局"在模型的每个实例中。

var myModel = new MyModel();

myModel.set('test', 1234);

现在,在另一个视图中,我再次实例化该模型:

var myModel = new MyModel();

myModel.get('test')

应该返回1234,而不是null。

关于如何做的任何想法?

我需要这个,因为我从其余的api中获取一个令牌,我想将它传递给每个请求。

因此,在我执行myModel.fetch()之后,我想添加令牌的值,将其绑定到模型,因此我将在以后的所有请求中使用它。

编辑,这是实际代码:

var proxy = new Proxy(),

                    target = '?csurl=http://laravelws.dev/account/token';

                proxy.urlRoot = proxy.urlRoot + target;

                proxy.fetch(
                    {
                        dataType: 'json',
                        success : function (resp) {
                            that.token = resp.get('_token');
                            proxy.set('_token', that.token);
                        }, 
                        error : function (model, xhr, options) {
                            console.log('router.js - could not fetch the CSRF token');
                        }
                    }
                );

我希望将令牌传递给代理模型,并使该令牌可用于该模型的所有未来实例。

此代码进入路由器的初始化功能 - 因此,每当有人登陆我的应用程序或刷新页面时,都会收到此请求。

1 个答案:

答案 0 :(得分:1)

使用默认值:

var MyModel = Backbone.Model.extend({
  defaults: {
    test: 1234
  }
});

编辑:

要实现您正在寻找的东西,您可以在原型上设置值:

Proxy.prototype.token = "XXX";

var proxy = new Proxy();
console.log(proxy.token);

请注意,token值将被共享(如果您更改了值,则会更改所有代理实例)。