我希望大家都知道pinterest样式布局及其行为:
奖金任务:
我在想如何用Meteor方式编写逻辑.让我们跳过用户界面代码,我只对业务逻辑感兴趣.
我正在考虑将ProductsDisplayed集合作为帮助器,它是空的并且在页面加载时由20个产品填充,然后当达到滚动点时,我从原始产品集合中插入20个产品等.
问题:
但也许关于ProductsDisplayed的整个想法是错误的.我很想知道你的想法!
更新!
我改变了只使用Products系列的方法.
服务器:
Meteor.publish "productsDisplayed", (number) ->
Products.find {},
limit: number
Run Code Online (Sandbox Code Playgroud)
客户:
Meteor.autosubscribe ->
Meteor.subscribe "productsDisplayed", Session.get('productsDisplayedNumber')
Run Code Online (Sandbox Code Playgroud)
当达到滚动点时,递增20个Session'productsDisplayedNumber'.但是自动订阅使得整个模板被重新渲染,而不仅仅是新元素.有任何想法吗?
我终于解决了这个问题.解决方案是让客户端只有Collection,就像那样:
# on client
# client side only collection
ProductsDisplayed = new Meteor.Collection(null)
Run Code Online (Sandbox Code Playgroud)
然后当达到滚动点时,询问服务器下一个N(limitNo)产品
# on client
Meteor.call 'getProducts', limitNo, skipNo, (err, products) =>
_.each products, (item, index) =>
# get rid of _id
delete item._id
ProductsDisplayed.insert( item )
Run Code Online (Sandbox Code Playgroud)
skipNo增加N,以便始终询问下一组数据.在服务器端,我有:
# on server
Meteor.methods
getProducts: (limitNo, skipNo) ->
productsCursor = Products.find( {}, {
limit: limitNo,
skip: skipNo
})
productsCursor.fetch()
Run Code Online (Sandbox Code Playgroud)
这个Meteor方法从Products系列返回下一组产品.
当然,视图模板显示ProductsDisplayed集合内容:
Template.products.products = ->
ProductsDisplayed.find {}
Run Code Online (Sandbox Code Playgroud)
所以你怎么看?
| 归档时间: |
|
| 查看次数: |
885 次 |
| 最近记录: |