- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的内存中有一个包含大约 50 个项目的数据集,我正在尝试为此数据集创建一个分页器,但我不确定如何执行此操作。
我正在使用自定义过滤器函数来过滤结果,效果很好,但不知何故我需要获取页数。
有什么线索吗?
最佳答案
Mithril Infinite是一种多功能 Mithril 组件,用于处理潜在的大量元素集合。它的主要目的是作为一个潜在的无限滚动列表,但它的 Github 页面还具有 a pagination demo 功能。 .
分页本身不应该是一个困难。最简单的分页需要一个有状态的索引来指示要显示的页面,以及一种将列表拆分为子列表来表示页面的方法。
关键是一个好的 reducer 函数,可以从我们的初始项目列表中创建页面列表:
// The initially empty collection of pages is the first argument.
// The function executes once for each item in a provided list like forEach & map.
function paginate( pages, item, index ){
// Modulo (%) is the remainder of x after division by y
// A result of 0 means a multiple.
// So if pageLength is 6, we would create a new page at 0, 6, 12, 18, etc...
if( index % pageLength === 0 )
pages.push( [] )
// Push the item onto the last page
pages[ pages.length - 1 ].push( item )
// Return the pages
return pages
}
然后您需要在组件 View 中的列表上调用此函数:
var FilteredPages = {
controller : function(){
this.filter = ''
this.index = 0
},
view : function( ctrl, pageLength, items ){
return m( '.FilteredPages',
m( 'input', {
value : ctrl.filter,
oninput : function(){
ctrl.filter = this.value
ctrl.index = 0
}
} ),
m( 'p',
m( 'a', {
innerHTML : 'Back',
onclick : function(){
if( ctrl.index > 0 )
ctrl.index--
}
} ),
' ',
m( 'a', {
innerHTML : 'Next',
onclick : function(){
var newIndex = ctrl.index + 1
if( newIndex < items / pageLength )
ctrl.index = newIndex
}
} )
),
m( '.page',
items
// Filter the items according to your requirements
.filter( function( item ){ return item.includes( ctrl.filter ) } )
// Paginate the filtered list using our reducer
.reduce( paginate, [] )
// Take the page at the current index
[ ctrl.index ]
// Map over the items on this page
.map( function( item ){
// Produce a view for each item
return m( 'p', item )
} )
)
)
}
}
关于javascript - 如何在 MithrilJS 中进行分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39463204/
我的内存中有一个包含大约 50 个项目的数据集,我正在尝试为此数据集创建一个分页器,但我不确定如何执行此操作。 我正在使用自定义过滤器函数来过滤结果,效果很好,但不知何故我需要获取页数。 有什么线索吗
我使用这样的 mithriljs 组件状态: const Dashboard = () => { let ExpenseAmount = 0; let IncomeAmount = 0
我有一个数组,我需要填充多个'properties',如下所示: [ { name: 'Date', value: '27 Oct' }, {
我需要通过 m.request 接收 http 状态错误,所以我根据文档使用 extract。但由于某种原因,它弄乱了我的数据返回。 根据文档,如果我使用 extract 获取状态,则 extract
我在项目中使用 m.request,因为我有一个可能会长时间运行的请求,所以我想使用 background:true 运行它。但是,该值似乎从未设置为生成的 m.prop。 我用一个基于这个 Stac
我是一名优秀的程序员,十分优秀!