- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我通过对数据数组中的项目使用 dom-repeat 来动态生成 paper-checkbox 元素。更新数组时复选框会正确更新,但 Polymer 不会将选中的属性重置为 false。因此,如果数据发生变化,复选框会正确更新,但它们会保持选中状态。
在我看来,dom-repeat 通过简单地更改它们的属性来重用以前创建的复选框。因此,当用户点击第一个复选框时,当 dom-repeat 重新生成 paper-checkbox 列表时,它也会保持选中状态。
下面是产生问题的代码(我只用 Chrome 测试过)。如果您单击第一个复选框,然后单击“随机项目”按钮,第一个复选框将保持选中状态。
我该如何避免呢?我试图将 checked 属性设置为 false (checked=false) 但它不起作用。当然可以通过 javascript 完成,但我希望避免它。
谢谢
Polymer({
is: "wc-rnd-checkboxes",
properties: {
data: { type: Array, value: [1, 2, 3, 4, 5] }
},
handleRndGenerator: function() {
this.data = [];
//It simply generates an array of random length between 1 and 5.
var length = Math.floor((Math.random() * 5) + 1)
for (i=0; i < length; i++) {
var irnd = Math.floor((Math.random() * 10) + 1);
this.data.push(irnd);
}
}
});
<script src="https://cdn.rawgit.com/download/polymer-cdn/1.1.4/lib/polymer/polymer.html"></script>
<link rel="import" href="https://cdn.rawgit.com/download/polymer-cdn/1.1.4/lib/paper-button/paper-button.html" />
<link rel="import" href="https://cdn.rawgit.com/download/polymer-cdn/1.1.4/lib/paper-checkbox/paper-checkbox.html" />
<dom-module is="wc-rnd-checkboxes">
<template>
<paper-button on-click="handleRndGenerator" raised>Random Items</paper-button><br /><br />
<template is="dom-repeat" items="{{data}}">
<paper-checkbox></paper-checkbox>
<span>{{index}}</span>
<br />
</template>
</template>
</dom-module>
<h3>Polymer Dom-repeat and paper-checkbox</h3>
<p>
<b>Instructions:</b>
<ol>
<li>click on the first checkbox;</li>
<li>click on generate "Random Items";</li>
<li>Issue: Polymer does not uncheck the first checkbox</li>
</ol>
</p>
<wc-rnd-checkboxes></wc-rnd-checkboxes>
最佳答案
在解释为什么 dom-repeat
中的复选框之前不要像你期望的那样行事,让我指出我在你的 fiddle 中发现的几个错误:
polymer.html
不是脚本,所以你应该像这样使用 html 导入 <link rel="import" href="https://cdn.rawgit.com/download/polymer-cdn/1.1.4/lib/polymer/polymer.html">
(我在下面的示例中使用 polygit 而不是 rawgit,但它们是同一回事)dom-repeat
的数组属性中你必须使用 this.push("arrayProperty", pushedValue)
否则 dom-repeat
不会更新。 (查看 guide 了解更多信息)现在,至于复选框的问题,dom-repeat
的问题是它非常高效,它延迟更新并且仅在完全必要时(基本上,当数组的大小发生变化时)添加或删除元素,因此它不会更新 template
的全部内容。但只删除/添加需要的内容。
而这正是这里发生的事情,即使您将数组更改为一个全新的数组,因为 dom-repeat
仅在您完成填充后更新 data
使用它的新值,它只会根据数组的新大小删除或添加复选框,并且更新已经存在的复选框的数据绑定(bind)到新数据。
数据绑定(bind)更新是关键部分,因为复选框没有任何数据绑定(bind) checked
属性(或任何其他属性),每个未删除的复选框都将保持数据更改前的任何状态。
实现所需行为的一种方法是更改 data
数组的结构并在数组项和复选框的属性之间创建数据绑定(bind)。
例如,我做的数据数组有这样的结构:
data = [{num: 1, checked: false}, {num: 2, checked: false}, {num: 3, checked: false}, {num: 4, checked: false}, {num: 5, checked: true}];
还有 dom-repeat
看起来像这样:
<template is="dom-repeat" items="{{data}}">
<paper-checkbox checked="{{item.checked}}"></paper-checkbox>
<span>{{item.num}}</span>
<br />
</template>
这样复选框将绑定(bind)到 checked
数组中相应元素的属性。
这是 the fiddle在那里你可以看到一切正常。
我希望这对您有所帮助,但不会让您失望 tl;dr XD
关于javascript - Polymer 1.0 Dom-repeat with paper-checkbox : uncheck on data changing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33830274/
在检查复选框时我发现有写 CheckBox checkbox = (CheckBox)sender 在 checkBox1_CheckedChanged 事件上。 请解释一下这是什么意思? 最佳答案
我正在使用来自命名空间 System.Windows.Forms 的 ToolTip 类编辑我的 Web 应用程序;我的代码中有几个复选框,因此显示此错误: 'CheckBox' is an ambi
我正在制作 Bootstrap 复选框下拉菜单,选项包含在 中。处理点击的标签,但我也有一个 在 a 标签内。 当用户按下实际复选框而不是仅按下 时,就会出现我的问题。元素。两者都被点击并且发生了
TLDR:使用defaultChecked而不是checked,工作jsbin . 尝试设置一个简单的复选框,在选中时会划掉其标签文本。由于某种原因,当我使用该组件时,handleChange 没有被
我想拥有它,所以如果复选框为 NULL 或 0,则它不像值为 1 时那样喜欢。另外,有没有办法将选中的框限制为 10 个? 当前代码: if(isset($_POST['submit'])){//to
如果我选中一个复选框,下拉列表应该只显示在该复选框旁边,但它会显示在它下面的所有其他复选框中。 这是我在 html 代码中使用的 css .sub-nav { display: none; } inp
我在警报对话框中有一个带有复选框的数据表,当我单击该复选框时,它没有选中(选中=选中)该框。我跟着这个video 这是我的尝试 import 'package:flutter/material.dar
如果单独使用,以下代码效果很好, Angular6.0 不允许 [(ngModel)] 与 FormGroup (Reactive Forms)。 As 在 angular 6.0 中已弃用,并将在
那么我应该使用哪个来选择元素?我仅使用复选框作为示例,这个问题涉及所有表单元素。 实际上,当我们这样做时,哪个更快: li:first 或 li:eq(0) ? 最佳答案 来自the document
问题 : 我有一个列表框,其中列表框是复选框。在第一次单击时,复选框被选中并选中。在第二次单击时,仅设置复选框。可以使用箭头键重新选择不同的复选框。我的目标是,首先选中该复选框,然后再检查(再次单击它
我似乎无法弄清楚如何让复选框和相关文本出现在一行上。文本很短,所以它似乎不是宽度问题。 我尝试在控件上设置 display:inline,但是当它呈现时,在输入和标签周围添加了一个跨度,并且具有 di
创建带有复选框列的 Table 非常容易,例如,使用 SWT.CHECK 标志。但是如何使某些表格行中的复选框不可编辑而其他行中的复选框保持可编辑? 最佳答案 我不知道这样做的简单方法。 但我看到了两
是否可以使用 TogglerBar 而不是 2 个复选框来显示或不显示不同的形状。 TogglerBar 的每个按钮中都写有绿色和红色? Manipulate[ Graphics[{If[thePin
我需要更改 Windows Phone 8 中 LongListMultiSelector 的复选框的颜色,因为我的背景是白色,这可能吗? 谢谢。 最佳答案 为此,您必须首先通过在 visual st
我有一个带有插件 Slick.CheckboxSelectColumn 的网格。 是否可以在没有 Jquery 的情况下隐藏某些行中的复选框?我想可以使用 Formatter。 这是带有 slickg
所以我有这个... 在这里,id 是有道理的值在引号中,因为它是一个字符串标识符。但是type呢?值(value)?不是 checkbox一种类型,例如 String 和 Boolean?为什么我总
问题: 如果用户选中了复选框,我将尝试验证下拉列表,如您在屏幕一中所见。 问题: 那么,如果用户选择了标题中的所有复选框,我该如何验证复选框呢?如您所见,屏幕二。如果我选中所有复选框,那么我希望启动验
我知道它有点重复,我正在尝试以不同的方式做到这一点,从而重新发布这个问题。 我想要实现的是,当有人“取消选中”OSPF 复选框时..被动接口(interface)检查也应该自动“取消选中”。我正在尝试
这是代码(是的,我使用的是基本的 reset.css): .checkbox { border: 1px solid black; width: 10px; height: 10px; }
我正在尝试显示多组带有标题复选框的复选框,如下图所示。 从数据库中我得到这样的数据, CODE SUBCODE DESCR DESCR
我是一名优秀的程序员,十分优秀!