自定义元素: -6ren">
gpt4 book ai didi

polymer - 控制纸复选框的状态

转载 作者:行者123 更新时间:2023-12-01 02:12:09 25 4
gpt4 key购买 nike

我正在尝试使用 paper-checkbox 设置一个元素在它里面。我希望复选框的选中状态由 ajax 调用的响应控制。

HTML:

<epic-list-episode checked="<%= episode.seen? %>">
<p><strong><%= episode.show.name %></strong></p>
</epic-list-episode>

自定义元素:
<polymer-element name="epic-list-episode" attributes="checked">

<template>
<link rel="stylesheet" href="epic-list-episode.css.scss" />
<div horizontal layout center>
<div flex>
<content></content>
</div>
<div vertical layout>
<paper-checkbox checked?="{{checked === 'true'}}" on-change="{{changeHandler}}"></paper-checkbox>
</div>
</div>
</template>

<script>
Polymer({
changeHandler: function(event) {
//Send ajax, wait for error/success callback
//checkbox.checked = response from ajax
}
});
</script>

</polymer-element>

如何做到这一点?我试过 return false但复选框仍然执行其切换动画。

澄清一下,这是我想要的流程:
  • 复选框未选中
  • 我单击复选框(我不想让它切换)
  • Ajax 请求被发送出去
  • 等待回调
  • 如果成功,切换复选框的状态
  • 最佳答案

    我认为你不需要那个 checked属性。

    你能做的是,当 on-change被调用,设置 checked paper-checkbox 的属性(property)恢复到之前的值。然后在 ajax 回调之后,将它设置回它应该的样子。

    changeHandler: function (event, detail, sender) {
    this.$.checkbox.checked = !this.$.checkbox.checked;

    // give the checkbox a little loading animation
    var loading = new CoreAnimation();
    loading.duration = 750;
    loading.easing = 'ease-in';
    loading.keyframes = [{ opacity: 1, transform: "scale(1)" }, { opacity: 0.4, transform: "scale(0.9)" }];
    loading.direction = 'alternate';
    loading.iterations = '1000';
    loading.target = this.$.checkbox;
    loading.play();

    // give it a little delay to act like a callback
    this.job('delay', function () {
    // stop the animation
    loading.finish();

    this.$.checkbox.checked = !this.$.checkbox.checked;
    }, 3000);
    }

    请注意,我还包含了一些动画代码以使用户感觉像 paper-checkbox正在做一些事情,以获得更好的用户体验。请看这个 jsbin对于一个工作示例。

    关于polymer - 控制纸复选框的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28399972/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com