4

サイト全体の複数のビューでアクセスする必要があるユーザー モデルがあります。マリオネット アプリケーションでグローバル モデルを作成できますか?

だから私はそれを介してアクセスできます:

window.MarionetteApp.userModel

これは、私がこれまでに持っていた唯一の理にかなっている考えです。誰かが backbone.marionette でユーザーを構成するより良い方法を持っていない限り、私はアイデアを受け入れます。

4

3 に答える 3

4

Marionette.RequestReponseを使用することをお勧めします。それを使用すると、次のようなことができます。

MarionetteApp.reqres.setHandler('currentUser', function() {
   if(MarionetteApp.currentUser) return MarionetteApp.currentUser;

   var user = MarionetteApp.currentUser = new MarionetteApp.models.User(/* whatever */);
   return user;
});

そして、次のようにモデルを取得します。

var user = MarionetteApp.request('currentUser');
于 2013-10-08T18:11:52.800 に答える
2

良い例として、David Sulc は次のように書いています

ContactManager.module("Entities", function(Entities, ContactManager, Backbone, Marionette, $, _){
  Entities.Header = Backbone.Model.extend({
    initialize: function(){
      var selectable = new Backbone.Picky.Selectable(this);
      _.extend(this, selectable);
    }
  });

  Entities.HeaderCollection = Backbone.Collection.extend({
    model: Entities.Header,

    initialize: function(){
      var singleSelect = new Backbone.Picky.SingleSelect(this);
      _.extend(this, singleSelect);
    }
  });

  var initializeHeaders = function(){
    Entities.headers = new Entities.HeaderCollection([
      { name: "Contacts", url: "contacts", navigationTrigger: "contacts:list" },
      { name: "About", url: "about", navigationTrigger: "about:show" }
    ]);
  };

  var API = {
    getHeaders: function(){
      if(Entities.headers === undefined){
        initializeHeaders();
      }
      return Entities.headers;
    }
  };

  ContactManager.reqres.setHandler("header:entities", function(){
    return API.getHeaders();
  });
});
于 2013-10-21T09:57:14.813 に答える
0

私はこれをやってしまった

MyApp.addInitializer(function(){
    this.currentUser = new UserModel();
});
于 2013-10-08T18:39:58.257 に答える