0
var MenuListView = Backbone.View.extend({
            el : '#menus',
            reset : function() {
                var hIndex = this.getTheMenuIndexHighlighting();
                _.each(this.model.models[hIndex].attributes.subMenus, function(model, index) {
                    model.set({highlight : false});
                });
    });

_.上記のコードでは、それぞれが回転していません。

更新 ここに私のサブメニューjsonの方法があります

[ {title:'Applications',bmUrl:'',id:'1',subMenus:[ {title: 'MsWord', bmUrl : 'msword.com';, id: 1, subMenus: null}, {title: 'MsExcel', bmUrl : 'msexcel.com';, id: 2, subMenus: null}, {title: 'MsPP', bmUrl : 'mspp.com';, id: 3, subMenus: null}, {title: 'MsOneNote', bmUrl : 'msonenote.com';, id: 4, subMenus: null}, {title: 'MsOutlook', bmUrl : 'msoutlook.com';, id: 5, subMenus: null} ],imgUrl:''}] 

体が理由を教えてくれますか?

_.each を $.each に置き換えると、ループが回転しますが、適切なモデル ビュー更新メソッドがトリガーされません。

4

2 に答える 2

2

この行を変更する必要があります

this.model.models[hIndex].attributes.subMenus

this.model.at(hIndex).get("subMenus")

編集:-これを言って、サブメニュー自体がコレクションであると想定していました
が、今では配列であり、アンダースコアサイト_.each() は配列では使用できず、コレクションでのみ使用できるようです。ここで、jquerys それぞれを配列に適用できます。

http://documentcloud.github.com/underscore/#arrays
アンダースコアの Web サイトへのリンク 配列にはそれぞれが含まれていないことに注意してください

于 2012-05-16T05:50:18.070 に答える
0

わずかな量のコードを投稿したため、推測して答えを出す必要があるようです。しかし、ここに私の試みがあります

  • this.model が確かに models プロパティを持つコレクションを参照していると仮定して、これをthis.model.models[hIndex].attributes.subMenus変換する必要があると思い ます。this.collection.models[hIndex].attributes.subMenus

  • 次に、インデックスにモデルが必要な場合はat、コレクションにメソッドがあるため、単純化しますthis.collection.at(hIndex).attributes,subMenus

  • 3 つ目は、コレクション (subMenus を参照) を使用するため、これを今すぐ実行できます。this.collection.at(hIndex).get("subMenus").each(function(subMenu){alert(subMenu.toJSON());})

あなたの最終的なコードは(仮定の負荷で)でなければなりません

var MenuListView = Backbone.View.extend({
    el: '#menus',
    reset: function () {
        var hIndex = this.getTheMenuIndexHighlighting();
        this.collection.at(hIndex).get("subMenus").each(function (subMenu) {
            alert(subMenu.toJSON());
        })
    });

アップデート

あなたはまだBBjsの世界に慣れていないようです。以下のようなビュー インスタンスを作成すると、上記のコードが jiffy のように機能します。

var viewInstance = new MenuListView({collection:Menu})

ここで、Menu は Collection の instance( new) です (これを使用します)。

于 2012-05-16T05:18:08.900 に答える