javascript – 如何获取基于模型初始化的复选框?

前端之家收集整理的这篇文章主要介绍了javascript – 如何获取基于模型初始化的复选框?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写我的第一个非教程angular.js网络应用程序.我正在使用两个智能表和清单模型.这是第一个使用all_types的st-safe-src,它是一个json对象数组,看起来像这样……
[
  {
    "_id": "56417a9603aba26400fcdb6a","type": "Beer","__v": 0
  },{
    "_id": "56456140cb5c3e8f004f4c49","type": "Skiing",...

这是我用来显示这些数据的表的html:

<table st-table="displayedCollection" st-safe-src="all_types" class="table table-striped">
      <thead>
          <tr>
              <th st-sort="type">Types</th>
          </tr>
      </thead>
      <tbody>
          <tr ng-repeat="x in displayedCollection">
              <td><input type="checkBox" checklist-model="vendor.types" checklist-value="x.type">{{x.type}}</td>
          </tr>
          <tr><td>id ({{curid}}) {{vendor.types}}</td></tr>
      </tbody>
      <tfoot>
          <tr>
              <td colspan="5" class="text-center">
                  <div st-pagination="" st-items-by-page="itemsByPage" st-displayed-pages="7"></div>
              </td>
          </tr>
      </tfoot>
  </table>

当我将数据加载到其中时,此表看起来像这样.选中复选框以匹配我的模型中的数据.

但是当我尝试在第二个智能表中做同样的事情时,更完整的json对象看起来像这样……

[
  {
    "_id": "569f047dd90a7874025b344e","product_title": "Plugs","product_img_001": "p001.jpg","product_img_002": "p002.jpg","product_vid_001": "bp.mov","__v": 0,"product_sizes": [
      "Large","Med.","Small","10.5"
    ],"product_types": [
      "Running Shoe"
    ]
  },{
    "_id": "569f3958b108a7d70201b89a","product_title": "Back Scratcher","product_img_001": "http://itchy.png","product_img_002": "http://relief-at-last.png","product_vid_001": "my-itch","product_sizes": [
      "Large"
    ],"product_types": [
      "Rocks"
    ]
  }
]

这是我用来在智能表中显示这些数据的html:

<table st-table="prodCollection" st-safe-src="all_products" class="table table-striped">
      <thead>
          <tr>
              <th st-sort="type">Products</th>
          </tr>
      </thead>
      <tbody>
          <tr ng-repeat="x in prodCollection">
              <td><input type="checkBox" checklist-model="vendor.products" checklist-value="x">{{x.product_title}}</td>
          </tr>
          <tr><td>{{vendor.products}}</td></tr>
      </tbody>
      <tfoot>
          <tr>
              <td colspan="5" class="text-center">
                  <div st-pagination="" st-items-by-page="itemsByPage" st-displayed-pages="7"></div>
              </td>
          </tr>
      </tfoot>
  </table>

当我将数据加载到其中时,此表看起来像这样:

我曾希望检查复选框,但不会检查它们.
如果做出这个改变……

<td><input type="checkBox" checklist-model="vendor.products" checklist-value="x.product_title">{{x.product_title}}</td>

…选中正确的复选框,但只会发布产品的标题.我需要做什么才能显示已选中的复选框并能够发布整个产品数据?

添加了一个plunker示例:http://plnkr.co/edit/aPCEBV5e9Pb5np9iaY2l

解决方法@H_502_35@
您可以在doc Array of objects (pick id)上使用id作为checklist-value而不是Object作为对象
<input type="checkBox" checklist-model="vendor.products" checklist-value="x._id">

或者,如果您需要将Object用作所选产品(checklist-value =“x”),则需要使用checklist-comparator,因为在您的plunker中,所选数组和完整产品列表没有相同的引用.比较器必须通过_id匹配相等的对象.试试这个

<input type="checkBox" checklist-comparator="._id" checklist-model="vendor.products" checklist-value="prod" />

猜你在找的JavaScript相关文章