gpt4 book ai didi

javascript - Angular : having a function as ng-false-value

转载 作者:行者123 更新时间:2023-12-03 08:47:16 25 4
gpt4 key购买 nike

在我的 Angular 应用程序中,我有以下复选框列表,它们是在嵌套的 ng-repeat 中生成的:

<div ng-repeat="partner in type.partners">
<label class="checkbox-inline">
<input type="checkbox"
ng-model="partners[$parent.$index][$index]"
ng-true-value="{{partner}}"
ng-change="handleCheckboxChanged({{type.id}})"
ng-checked="getChecked({{partner.id}})"
>
<p><span ></span>{{partner.name}}<p>
</label>
</div>

最终看起来如下图所示:

enter image description here

当用户通过 chekcbox 选择合作伙伴时,该合作伙伴会利用 ng-true-valueng-model 添加到所选合作伙伴的嵌套列表中>.

但是,当用户取消选择复选框时,我的对象仍将保留该键:值对,只不过该值现在只是false,如此处所示控制台:

enter image description here

我的意图是,当用户取消勾选复选框时,这个键:值对就会消失,而不是变成 false。

是否可以通过触发 ng-false-value 函数来实现此目的?

最佳答案

您所描述的 - 这是默认行为。您可以调整您的 ngChange 函数。

只是一个简单的example ,如何实现您想要的。

<div ng-repeat="partner in partners">
<label>
<input type="checkbox"
value="partner.id"
ng-model="partner.selected"
ng-change="changeValue(partner)"
/>
{{partner.name}}
</label>
</div>
<小时/>
var partnersList = [], idsArray = [];

$scope.changeValue = function(partner){
if(partner.selected)
addPartner(partner);
else
removePartner(partner);
};

var addPartner= function(partner){
if(!existInList(partner))
partnersList.push(partner);
};

var removePartner= function(partner){
idsArray = getIdsArray();
var indexToRemove = idsArray.indexOf(partner.id);
if(indexToRemove == -1)
return;

partnersList.splice(indexToRemove, 1);
};

var existInList = function(partner){
idsArray = getIdsArray();
return idsArray.indexOf(partner.id) != -1;
};

var getIdsArray = function(){
return partnersList.map(function(partner){ return partner.id });
};

链接到JSFiddle示例。

关于javascript - Angular : having a function as ng-false-value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32838790/

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