javascript - 以 Angular 动态创建两列复选框列表

标签 javascript angularjs checkbox

我有一个使用 angular.js 的应用程序,我对它还很陌生。我有一个复选框列表,这些复选框是根据先前的选择动态创建的。

例如,如果我有一个 Fruits 下拉列表,将创建以下 html:

<input type='checkbox' value="apple">apple</input>
<input type='checkbox' value="banana">banana</input>
<input type='checkbox' value="mango">mango</input>
<input type='checkbox' value="orange">orange</input>
<input type='checkbox' value="pear">pear</input>
<input type='checkbox' value="watermelon">water</input>

但是,有时生成的复选框数量超过 20 个项目,我想利用一些未使用的空间。

所以我想知道是否可以将复选框列表分成两列而不是一列,以便生成一个新列来填充其余的复选框?

例如:如果我有 18 个项目,而不是一个包含 18 个复选框的单个列的大列表,最终结果将是列中有 10 个复选框,旁边的另一列中有 8 个复选框。我想最多只有 2 列。这可能吗?

这是我目前所拥有的,我不确定这是否是最好的方法。否则我只会回答这个问题并将其标记为这样。我猜拆分数据的逻辑将在代码隐藏中完成。

示例:http://jsfiddle.net/7843b/

视觉呈现

  X  Apple         X  Pears
  X  Banana        X  Watermelon
  X  Mango
  X  Orange

X 代表一个复选框。

最佳答案

这些解决方案似乎比需要的要复杂一些。让 css 处理将它们放入列中:

Javascript:

$scope things = ["car", "box", "plant", "dice", "knife", "calendar"];

html:

<div  class="checkbox-column" ng-repeat='thing in things'>
    <input type="checkbox" /><span>{{thing}}</span>
</div>

在 css 中用内联 block 显示每个元素,宽度约为 48%。

.checkbox-column{
    display: inline-block;
    width:48%; 
}

48% 的宽度将为其提供 2 列。如果您想要 3 列,则只需使用 30% 左右的宽度。 这也会在调整浏览器窗口时使列保持对齐。

关于javascript - 以 Angular 动态创建两列复选框列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20368326/

相关文章:

javascript - jshint 验证 es5 错误

angularjs - 使用现有值填充 AngularJS 模型

javascript - 为什么 javascript "checkbox.disable"不会使 ASP.NET 中的关联标签变灰?

python - 使用 python mechanize 的复选框输入

javascript - C3.js 中的时间序列图未访问时间戳

javascript - Karma单元测试 'undefined'不是函数错误

javascript - Jquery sortable - 限制 droppables

javascript - AngularJS 中的生产者消费者队列

angularjs - Controller 与指令一样不起作用

javascript - 在 Jquery 中将复选框值作为 JSON 传递