3

私はオブジェクトの配列を持っています。言う

var 
sidelist = [
    {
    name:"asdf", 
    id:1234,
    types:[...]


    }
];

すべてのオブジェクトは、この構造を使用してページ上のボックスに変換されます

Template.global.side = function(){
    var obj = [], m;
    m = 1;
    for (var i in sides){
        obj.push({
            index : m,
            object : sides[i]
        });
    }

    return obj;
}

HTML:

        {{#each side}}
            <div class="span{{this.index}}" id={{this.object.id}}>


                    <div class="side-head">{{this.object.name}}</div> 

</template>

新しいオブジェクトを作成して配列にプッシュする関数があります。依存する配列が変更されたときに、ボックスの行をページ上でリアクティブに更新するにはどうすればよいですか?

したがって、新しいオブジェクトを追加すると、新しいボックスが表示されます。

4

3 に答える 3

4

依存関係を使用する場合は、次のようになります。

var sidelist = ...;
var sidelist_dep = new Deps.Dependency;

 

Template.global.side = function(){
    sidelist_dep.depend();
    // Do your stuff here;
    return ...;
};

 

// Important: call this every time you change sidelist,
// AFTER the change is made.
sidelist_dep.changed();

 

参照: http://docs.meteor.com/#deps

于 2013-07-16T01:34:46.007 に答える
1

ほとんどの場合、Collectionリアクティブ オブジェクトの一部である配列ではなく、オブジェクトを Meteor に配置する必要があります。これには次のような多くの理由があります。

  • 追加、削除、検索、更新がすべて高速になります
  • 反応性は、配列ではなく要素レベルになります
  • 何かが追加または削除された場合、Meteor はオブジェクトのセット全体を再レンダリングしません - 変更だけです。
  • コレクションの並べ替え順序を定義できるため、固定順序よりもはるかに柔軟になります
于 2013-07-15T23:52:13.583 に答える
0

Andrew Wilcoxのisolate-valueスマートパッケージを見てみましょう: https://atmosphere.meteor.com/package/isolate-value

README には、セッション変数に格納された配列から値が追加/削除されたときに、関連するテンプレートを選択的に再レン​​ダリングする正確な例が含まれています。

于 2013-07-20T09:38:57.523 に答える