使用angularjs如何获取检查和未检查的值

时间:2019-02-25 12:22:24

标签: angularjs

在这里,我将值绑定到ng-click为

<input type="checkbox"  ng-model="a.CheckAssign"ng-click="myFunctionnew(a.ENQUIRY_CODE,a.CheckAssign)" />
enquiryArr=[]
$scope.myFunctionnew = function(enqcode,checkassign)
{
enquiryArr.push(enqcode + '&' + checkassign)
var uniqueNames = [];
$.each(enquiryArr, function (i, el) {
    if ($.inArray(el, uniqueNames) === -1) {
        uniqueNames.push(el);
        console.log(uniqueNames)
    }
    else
    {
        console.log(uniqueNames);
    }
}

在这里,当我选中并取消选中复选框时,该值存储多个 请帮我如何存储查询代码和T / F值。

2 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,则说明您在enquiryArr中遇到了重复的条目。之所以遇到这个问题,是因为您试图以一种奇怪的方式手动跟踪该阵列。尽管可以通过多种方法来纠正存储方式,但通过角度跟踪要检查的内容和不检查的内容甚至更容易。

使用以下数据集:

$scope.enquiries = [
  {ENQUIRY_CODE: 'ENQUIRY_1', ENQUIRY_NAME: 'First Enquiry', selected: false},
  {ENQUIRY_CODE: 'ENQUIRY_2', ENQUIRY_NAME: 'Second Enquiry', selected: false},
  {ENQUIRY_CODE: 'ENQUIRY_3', ENQUIRY_NAME: 'Third Enquiry', selected: false},
  {ENQUIRY_CODE: 'ENQUIRY_4', ENQUIRY_NAME: 'Fourth Enquiry', selected: false}
];

并将selected字段绑定到您的复选框ng-model

<div ng-repeat="e in enquiries">
  <input type="checkbox" ng-model="e.selected" />
  {{e.ENQUIRY_NAME}}
</div>

只需查看$scope.enquiries数组并寻找selected: true(如果想知道未选中的对象,则为false),即可确定要检查的对象。

在javascript中,您可以使用简单的数组过滤器来获取选定的值,例如:

$scope.enquiries.filter(e => e.selected);

或者,如果要在模板中获取它们,也可以使用filter管道,例如:

{{(enquiries | filter:{selected:true})}}

这是一个interactive plunkr,您可以查看它。

其他注意:如果您确实想在单击复选框时运行某些内容,则仍然可以使用ng-click并运行您的自定义代码,但是,我建议使用ng-change作为除了单击之外,还有其他方法可以更改复选框的选定值。

答案 1 :(得分:0)

我已经测试了您的代码及其工作正常。您的问题不太清楚,因此您可以检查以下测试代码。

<div ng-controller="MyController">
<div ng-repeat="dt in data">
 <input type="checkbox"  ng-model="CheckAssign" ng-click="myFunctionnew(dt.name,dt.volume)" />
</div>
</div>

JavaScript

$scope.myFunctionnew = function(enqcode,checkassign)
{
enquiryArr.push(enqcode + '&' + checkassign)
var uniqueNames = [];
for(i=0; i <enquiryArr.length; i++) {
    if ($.inArray(enquiryArr[i], uniqueNames) == -1) {
        uniqueNames.push(enquiryArr[i]);
        console.log(uniqueNames)
    }
    else
    {
        console.log(uniqueNames);
    }
}
}

JSFiddle