角:具有功能NG-假值 [英] Angular: having a function as ng-false-value
问题描述
在我的角度应用程序,我有复选框下面的列表中,内产生一个嵌套的 NG-重复
:
In my Angular app, I have the following list of checkboxes, generated within a nested 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>
这最终会看起来像下面的图片:
This will end up looking like the picture below:
当用户选择一个chekcbox的合作伙伴,这个合作伙伴被添加到选定的合作伙伴的嵌套列表,利用 NG-真值
和 NG-模型
。
When a user selects a partner with a chekcbox, this partner gets added to the nested list of selected partners, making use of ng-true-value
and ng-model
.
然而,当用户的取消选中的复选框,我的目标仍然会保持该键:值对,但该值将现在仅仅是假
,因为在这里看到控制台:
However, when a user deselects a checkbox, my object will still keep that key:value pair, except the value will now simply be false
, as seen here in the console:
我的意图将是此项:当用户unticks一个复选框值对就会消失,而不是它只是变成假的,
My intention would be that this key:value pair would disappear when a user unticks a checkbox, instead of it just becoming false.
是否有可能触发一个函数作为这样做NG-假值
?
Is it possible to do so by triggering a function as the ng-false-value
?
推荐答案
- 这是一个默认行为。您可以调整 ngChange
功能。
What you described - this is a default behaviour. You can adjust your ngChange
function.
只是一个简单的 示例 ,你如何能促成所需。
Just a simple example, how you can make desired.
<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 例子。
这篇关于角:具有功能NG-假值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!