AMP 在 Show More 上显示加载指示器
AMP show loading indicator on Show More
我按照 this example 对 AMP 实施了 "Show More" 操作。它工作得很好,但是当我点击按钮时,它没有显示任何内容来让用户知道页面正在加载。
我的后端不是特别快,所以看起来它直到最终加载时才工作。
在the demo中也没有,但是超级快。
有什么办法吗?即使它只是禁用按钮。我没有在列表或表格中看到任何 class 更改,以便在 CSS 上使用它们。
这是我的代码:
amp-state id="#{section}State" src="#{path}"
amp-state id="#{section}"
script type="application/json"
| {
| "page": 2,
| "hasMorePages": true
| }
|<amp-list src="#{path}" layout="responsive" height="600px" width="600px" [src]="#{section}State.items" [height]="(#{section}State.items.length / 3) * 400">
template[type="amp-mustache"]
= render partial: item_template, locals: { image: image }
|</amp-list>
form method="GET" action="#{path}" action-xhr="#{path}" target="_top" on="submit-success: AMP.setState({ #{section}State: { items: #{section}State.items.concat(event.response.items) }, #{section}: { page: #{section}.page + 1, hasMorePages: event.response.hasMorePages } });" novalidate=""
|<input type="hidden" name="page" value="2" [value]="#{section}.page">
|<input type="submit"
value="Show more"
class="show-more"
[class] = "(#{section}.hasMorePages == false ? 'hide' : 'ampstart-btn caps m1 mb3 show show-more')">
它只是示例中的那个,只是稍作了一些命名更改。
在提交表单时显示加载指示器有两种方式:
使用amp-form
的内置submitting
状态:
<form ...>
...
<button>Show more</button>
...
<div submitting>
Loading...
</div>
</form>
如果您需要更大的灵活性,您可以在 amp-state
变量中跟踪表单状态,例如myFormState
,然后在不同的表单提交事件上更新。根据变量,您可以在页面上隐藏和显示不同的元素:
<form on="submit: AMP.setState( { myFormState: 'submitting' } ),
submit-success: AMP.setState( { myFormState: 'success' } ),
submit-error: AMP.setState( { myFormState: 'error' } )
" ... >
<amp-list [hidden]="myFormState != 'success'" ... > ... </amp-list>
<div hidden [hidden]="myFormState != 'submitting'" ...>Loading</div>
<div hidden [hidden]="myFormState != 'error'" ...>Something went wrong :-(</div>
我按照 this example 对 AMP 实施了 "Show More" 操作。它工作得很好,但是当我点击按钮时,它没有显示任何内容来让用户知道页面正在加载。
我的后端不是特别快,所以看起来它直到最终加载时才工作。
在the demo中也没有,但是超级快。
有什么办法吗?即使它只是禁用按钮。我没有在列表或表格中看到任何 class 更改,以便在 CSS 上使用它们。
这是我的代码:
amp-state id="#{section}State" src="#{path}"
amp-state id="#{section}"
script type="application/json"
| {
| "page": 2,
| "hasMorePages": true
| }
|<amp-list src="#{path}" layout="responsive" height="600px" width="600px" [src]="#{section}State.items" [height]="(#{section}State.items.length / 3) * 400">
template[type="amp-mustache"]
= render partial: item_template, locals: { image: image }
|</amp-list>
form method="GET" action="#{path}" action-xhr="#{path}" target="_top" on="submit-success: AMP.setState({ #{section}State: { items: #{section}State.items.concat(event.response.items) }, #{section}: { page: #{section}.page + 1, hasMorePages: event.response.hasMorePages } });" novalidate=""
|<input type="hidden" name="page" value="2" [value]="#{section}.page">
|<input type="submit"
value="Show more"
class="show-more"
[class] = "(#{section}.hasMorePages == false ? 'hide' : 'ampstart-btn caps m1 mb3 show show-more')">
它只是示例中的那个,只是稍作了一些命名更改。
在提交表单时显示加载指示器有两种方式:
使用
amp-form
的内置submitting
状态:<form ...> ... <button>Show more</button> ... <div submitting> Loading... </div> </form>
如果您需要更大的灵活性,您可以在
amp-state
变量中跟踪表单状态,例如myFormState
,然后在不同的表单提交事件上更新。根据变量,您可以在页面上隐藏和显示不同的元素:<form on="submit: AMP.setState( { myFormState: 'submitting' } ), submit-success: AMP.setState( { myFormState: 'success' } ), submit-error: AMP.setState( { myFormState: 'error' } ) " ... > <amp-list [hidden]="myFormState != 'success'" ... > ... </amp-list> <div hidden [hidden]="myFormState != 'submitting'" ...>Loading</div> <div hidden [hidden]="myFormState != 'error'" ...>Something went wrong :-(</div>