8

Backbone.jsに慣れてきましたが、理解できないことの1つは、ページを設定するために必要なすべての1回限りのjQueryコードをどこに配置するかです。

jQueryカルーセルプラグインを構成し、「上にスクロール」矢印を追加するという種類のことをご存知でしょう...ユーザーが最初にページをロードしたときに発生する1回限りの構成。

現在、ルーターで実行しています。

 var AppRouter = Backbone.Router.extend({
  routes: {
    // some routes
  },
  initialize: function() {
    initializeJqueryStuff();
  } ...
 });
 var StateApp = new AppRouter();
 Backbone.history.start({
   pushState: true
 });
 function initializeJqueryStuff() { 
   // one-off jQuery stuff goes here
 }

うん。どのようにすればいいですか?initializeJqueryStuffRouterオブジェクトの別のプロパティである必要がありますか?それはすべて内部に住むべきinitializeですか?または、実際にこのコードをBackboneアプリから完全に分離しておく必要がありますか?

4

2 に答える 2

1

私は通常LayoutView、アプリケーションのすべての「実際の」ビューのレンダリングを担当するルートビューを定義します。このレイアウトビューは、他のビューコードを実行する必要がある前に、一度だけ初期化されます。また、1回限りのビュー構成を行う傾向がある場所でもあります。

サンプル:

//LayoutView should be considered a singleton, only initialized once
var LayoutView = Backbone.View.extend({
    el:'body',

    initialize: function() {
        this.initializeSomejQueryStuff();
    },

    renderChild: function(child) {
        if(this._currentChild)
            this._currentChild.remove();
        this._currentChild = child;
        this.$el.html(child.render().el);
    },

    initializeSomejQueryStuff: function() {
        //init here
    }
});

使用法:

var AppRouter = Backbone.Router.extend({
    routes: {
        "foo/:id": "foo"
    },

    initialize: function() {
        this.layout = new LayoutView();
    },

    foo: function(id) {
        var model = new Foo({id:id});
        var view = new FooView({model:model});

        //delegate the view rendering to a layout
        this.layout.renderChild(view);
    }
});
于 2013-02-01T13:29:37.700 に答える
0

うーん...英語が下手な場合に詳細を見逃してしまったらごめんなさい。しかし、私があなたの質問の要点を見ることができるように、Backboneに関連付けられていないjQueryのものをどこに構成して配置することができますか?全体として、このコードを分離して.htmlにリンクするだけです。

バックボーンはほんの少しのMVCです。レンダリングの関数とビューに関連付けられたいくつかのjsのものを操作できますBackbone.View.extend({...})が、全体として、異なるものに対して異なる構造を作成することは良い点だと思います。このようなsmth:

.../
   public/
         css/
         img/
         lib/
            ..any source code for your plugins..
         tpl/
            ..for your templates..
         js/
           models/
                 models.js
           views/
                ..your views.js..
           main.js(your backbone router and for example, .loadTemplate() func for templates and other)
           ..any code for plugings configuration..

したがって、構造は、何がソースで何であるかを理解し、コーディングを明確にするのに役立つと思います。

お役に立てば幸いです。smthを誤解してすみません。

于 2013-02-01T09:39:19.723 に答える