【发布时间】:2017-08-13 13:20:14
【问题描述】:
我正在寻找使用 ajax 在前端对列表进行排序的最佳实践。
所以我有一个循环遍历所有项目的组件。然后是带有复选框的侧边栏,以使用 Ajax 进行过滤。每个复选框都将是一个类别,并通过检查该过滤器来实现过滤器。
在我的组件default.htm中,我有
{% set items = __SELF__.items %}
<div class="col-md-12" id="results">
{% for item in items %}
<ul>
<li>{{ item.title }} - {{ item.description }}</li>
</ul>
{% endfor %}
</div>
还有一个按钮,直到我可以切换到复选框为止。
<button class="btn btn-default"
data-request="onHandleForm"
data-request-update="#results">
Go
在我的组件插件文件中
// Fetches everything
public function onRun() {
$order = items::orderBy('id', 'asc');
$this->items = $order->get();
}
function onHandleForm()
{
// Fetch all of the items where category is 2 for test purposes
$order = items::orderBy('id', 'desc')->where('category','2');
$filter = $order->get();
$this->page['items'] = $filter;
}
但是我遇到了找不到零件的问题。以上内容相当草率,但我只是在寻找刷新内容的最佳方式(使用多个部分来更新或只是一个 div?)并处理范围。
我知道部分更新,但我需要一个工作示例来学习。我不知道组件中范围的最佳实践,这是否会影响分页,以及如何在一个组件中构建具有多个部分的设置。
【问题讨论】:
-
您可以尝试删除
data-request-update="#results"并在您的onHandleForm中使用return [ '#results' => $this->renderPartial('yourcomponent::default.htm') ];返回更新
标签: php ajax laravel octobercms octobercms-plugins