为了账号安全,请及时绑定邮箱和手机立即绑定

获取循环中项目的索引以在 if 语句中使用以获取另一个对象中的值

获取循环中项目的索引以在 if 语句中使用以获取另一个对象中的值

慕森卡 2023-01-06 09:29:56

我试图在循环中使用当前项目的索引从父对象中获取值,如果我直接将数字放入,我只能获取数据。但是,我需要使用索引来代替.


所以 Parent 对象包含 Library、Books 和 Book prices


<!-- ko foreach: value().Library -->

      <ul>

      <li>

          <div>

               <h3 data-bind="text: Name + ' - ' +  Description"></h3>

          </div>

 <!-- ko if: $parent.value().BookPrices.length > 0  -->

          <div>

               <span data-bind="text: $parent.value().BookPrices[1].Dollars"></span>

          </div>

 <!-- /ko -->

    </li>

    </ul>

 <!-- /ko -->

任何想法/建议我如何使用循环中当前项目的索引甚至 ID 属性来使用 [ ] 获取值Dollars将不胜感激。


查看完整描述

1 回答

?
慕少森

TA贡献1751条经验 获得超9个赞

是这样的吗?


function ViewModel() {

  var self = this;

  self.value = ko.observable({

    Library: [{

        Id: 1,

        Name: 'Test 1',

        Description: 'Test 1 Description'

      },

      {

        Id: 2,

        Name: 'Test 2',

        Description: 'Test 2 Description'

      },

      {

        Id: 3,

        Name: 'Test 3',

        Description: 'Test 3 Description'

      }

    ],

    BookPrices: [{

      Id: 1,

      Dollars: 5.99

    }, {

      Id: 2,

      Dollars: 9.99

    }, {

      Id: 3,

      Dollars: 15.99

    }]

  })

  

  self.getBookPrice = function(item){

    var result = self.value().BookPrices.filter(x=>x.Id == item.Id);

    return result.length === 0 ? 0.00 : result[0].Dollars;

  

  }


}


ko.applyBindings(new ViewModel());

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

<!-- ko foreach: value().Library -->

<ul>

  <li>

    <div>

      <h3 data-bind="text: Name + ' - ' +  Description"></h3>

    </div>

    <!-- ko if: $parent.value().BookPrices.length > 0  -->

    <div>

      <span data-bind="text: $parent.getBookPrice($data)"></span>

    </div>

    <!-- /ko -->

  </li>

</ul>

<!-- /ko -->


查看完整回答
反对 回复 2023-01-06
  • 1 回答
  • 0 关注
  • 14 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信