角:具有功能NG-假值 [英] Angular: having a function as ng-false-value

查看:136
本文介绍了角:具有功能NG-假值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的角度应用程序,我有复选框下面的列表中,内产生一个嵌套的 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆