簡體   English   中英

Meteor.js和不改組

[英]Meteor.js and non shuffling each

我在通過反應式集合實現非改組時遇到問題。 我的意思是說我有一個按分數值排序的集合,即使分數發生變化,我也不想更改順序。 我希望它是被動的,但列表項每次都不會改變位置。

當前代碼是這個

ListController = FastRender.RouteController.extend({
find: function (tag){
    if(!!tag){
        return Lib.Items.Tags.SupportedType[tag].find;
    }
    return {};
},
findOptions: function(order, pageNum) {
    var findOption = { limit: Lib.Items.Settings.ItemsPerPage * (parseInt(pageNum) || this.increment)};
    if(!!order){
        _.extend(findOption, Lib.Items.ListOrders.SupportedType[order].findOption);
    }
    return findOption;
},
waitOn: function() {
    return [
        Meteor.subscribe('items.all', this.params.tag, this.params.order, this.pageNum),
    ];
},
data: function () {
    return {
        "items": Items.find(this.find(), this.findOptions(this.params.order, this.params.pageNum))
    };
},
action: function(){
    this.render();
}
});
[...]

this.route('list', {
    path: '/list/:pageNum?',
    controller: ListController
});
this.route('list_order_limit', {
    path: '/list/order/:order/:pageNum?',
    controller: ListController
});
this.route('list_tag_limit', {
    path: '/list/tag/:tag/:pageNum?',
    controller: ListController
});
this.route('list_tag_order_limit', {
    path: '/list/tag/:tag/order/:order/:pageNum?',
    controller: ListController
});

{{#each items}}
        {{> item}}
{{/each}}

這樣,一切正常,但是列表更改順序(這是正確的,但不是我想要的行為)。 我嘗試了一些不同的解決方案,但沒有任何效果。 我從修改數據開始。 我放

data: function () {
return {
    "items": Items.find(this.find(), this.findOptions(this.params.pageNum))
};
},

通過這種方式,數據對訂購一無所知(只有訂閱者知道哪個訂購用於獲取第一批商品)。 問題在於,即使路由從一個順序更改為另一個順序,列表也不會更新。 在發生這種情況的同時,我看到訂閱被新的order參數調用(因此,通過ddp發送的數據實際上應該是正確的)。 我什至嘗試停止並重新訂閱,但沒有任何變化。 我做錯了什么? 有沒有更好的方法來使列表在其項目中反應而不是在其順序中反應? 提前致謝。

我在您的代碼中看不到任何通過得分值明確引用順序的內容; 但是我相信這是Meteor中一個未解決的問題: https : //github.com/meteor/meteor/issues/1276

該線程中建議的解決方法之一是在客戶端上通過_id添加顯式排序,這將確保即使項發生更改,游標也是穩定的。

我可以想象出一種更常規的方法來解決此問題,該方法是在publish函數中計算所需的順序,並使用publish API將自定義字段發送到客戶端,然后按這些字段進行排序。 這比光標要復雜得多,但是會導致項目以發布時確定的確切順序顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM