1

backback.js 0.9.2にアップグレードしたので、バックボーンコードを機能させるのにかなりの問題があります。私が抱えている問題の1つは、ウィンドウ内の変数を参照することです。0.5.3の以下のコードを削除したように正常に機能しました

this.namespace.blaaaaビットを気にしないでください。基本的に、オブジェクトを名前空間に配置する処理を行う名前空間ラッパーがあります。ここで私が求めているのは、ページビュー内にあるPageDisplayビュー内からmyAppにアクセスできない理由です。myAppはウィンドウ変数であるため、直接呼び出すことでこれにアクセスするべきではありません。

myApp.js

$(window).load(function() {
    myApp = new Page({ el: $("body"), scroll: $(window).scrollTop() });
})

Page.js

this.namespace.Page = Backbone.View.extend({
    initialize: function( ) {
        this.pageDisplay = new PageDisplay({ 
            el: $("#showBrowser")
        });
    }
});

PageDisplay.js

this.namespace.PageDisplay = Backbone.View.extend({
    initialize: function( ) {
        myApp.model.set("bla");
    }
});
4

2 に答える 2

2

あなたの$(window).load()ハンドラーは次のように推測します:

$(window).load(function() {
    myApp = new Page({ el: $("body"), scroll: $(window).scrollTop() });
})

呼び出されたときにスコープ内にないため失敗しPage、せいぜい、myApp後でundefinedしようとしたときに失敗myApp.model.set()します。名前空間内でを定義しPageます。

this.namespace.Page = Backbone.View.extend({ /*...*/ });

thisはおそらくwindowそのコンテキストにあるため、はありnamespace.PageませんPagenamespace.Page初期化関数内で同じ問題が発生します。

this.pageDisplay = new PageDisplay({ 
    el: $("#showBrowser")
});

ありますがnamespace.PageDisplay、ありませんPageDisplay

単純なandの代わりにnamespace.Pageandを参照する必要があります。また、ビューを定義するときにを削除することをお勧めします。これは、混乱を招き、バグの可能性を広げるだけです。namespace.PageDisplayPagePageDisplaythis

于 2012-04-27T22:30:15.013 に答える
0

ウィンドウをビューとして使用します。それがそのようなものです。これで、ウィンドウの場合と同じ動作が得られますが、render メソッドは必要ありません (誰かが考えられない限り?)。このようにして、ウィンドウを離れて戻ってきたり、ウィンドウ全体のサイズを変更したりするために、これらのイベントを実行できます。これが私がしたことです:

var WindowView = Backbone.View.extend({
    "el": window,
    "events": {
        "resize": "onResize"
        "focus": "onFocus"
        "blur": "onBlur"
    },
    "onResize": function (ev) {

    },
    "onFocus": function (ev) {

    },
    "onBlur": function (ev) {

    }
});

次に、標準ビューのような新しいビューを作成するだけです。

于 2013-02-05T22:50:09.163 に答える