Используя angularjs, как я могу получить проверенные и непроверенные значения - PullRequest
0 голосов
/ 25 февраля 2019

Здесь я привязываю значения для 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 голосов
/ 25 февраля 2019

Если я правильно понимаю вашу проблему, вы сталкиваетесь с дублирующими записями в вашем 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 вы можете использовать простой Array Filter для получения выбранных значений как таковых:

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

Или, если вы хотите получить их в своемшаблон, вы также можете использовать filter трубу как таковую:

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

Вот интерактивный plunkr , который вы можете просмотреть это.

РазноеПримечание. Если вы хотите что-то запустить, когда флажок установлен, вы все равно можете использовать ng-click и запустить собственный код, однако я бы порекомендовал использовать ng-change, так как есть другие способы изменить выбранное значениефлажок кроме щелчка.

0 голосов
/ 25 февраля 2019

Я протестировал ваш код и он работает нормально.Ваша проблема не так ясна, поэтому вы можете проверить следующий тестовый код.

<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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...