Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS-获取存在多个无线电输入的值_Javascript_Regex_Angularjs_Forms_Angularjs Ng Repeat - Fatal编程技术网

Javascript AngularJS-获取存在多个无线电输入的值

Javascript AngularJS-获取存在多个无线电输入的值,javascript,regex,angularjs,forms,angularjs-ng-repeat,Javascript,Regex,Angularjs,Forms,Angularjs Ng Repeat,我正在尝试使用AngularJS构建一个表单的扩展,其中预先存在一系列集合固定值,其值对应于传递给控制器的参数。设置并呈现这五个固定值后,可能会出现自定义选项,这些选项应使用相同的值,我正在使用ng repeatfor 我的值返回正确,但是根据设计,存在多个具有相同值的复选框,这显然会导致在选择任何单个单选按钮时选择具有相同值的所有输入 我用于生成表单的初始代码如下所示: <form class="form_report form_performanceReport" data-ng-su

我正在尝试使用AngularJS构建一个表单的扩展,其中预先存在一系列集合固定值,其值对应于传递给控制器的参数。设置并呈现这五个固定值后,可能会出现自定义选项,这些选项应使用相同的值,我正在使用
ng repeat
for

我的值返回正确,但是根据设计,存在多个具有相同值的复选框,这显然会导致在选择任何单个单选按钮时选择具有相同值的所有输入

我用于生成表单的初始代码如下所示:

<form class="form_report form_performanceReport" data-ng-submit="performance.createReport(performance.save)">
    <fieldset class="form_report-reportType">
        <legend>Select a report type</legend>

        <div class="elements">
            <label>
                <input type="radio" value="grades" data-ng-model="performance.searchParams.type">
                Grade
            </label>

            <label>
                <input type="radio" value="weights" data-ng-model="performance.searchParams.type" >
                Weight
            </label>

            <label>
                <input type="radio" value="calendar" data-ng-model="performance.searchParams.type" >
                Calendar of supply
            </label>

            <label>
                <input type="radio" value="post-mortem" data-ng-model="performance.searchParams.type">
                Postmortem
            </label>

            <label>
                <input type="radio" value="deadweight-gains" data-ng-model="performance.searchParams.type">
                Dead weight gain
            </label>

            <label data-ng-repeat="report in performance.reports">
                <input type="radio" value="{{report.type}}" data-ng-model="performance.searchParams.type">
                {{report.name}}
            </label>
        </div>
    </fieldset>

    <!-- Edited for brevity... -->
</form>
function searchParamsFilter($filter, constants) {
  return function(params) {
    // Create a copy of the params, omit empty or default
    var filteredParams = {};
    for (var i in params) {
      if (params[i] && params[i] !== '' && params[i] !== constants.DEFAULT_ANY && params[i] !== constants.DEFAULT_ANY_ID.name && params[i] !== constants.DEFAULT_ANY_ID.id) {
        filteredParams[i] = params[i];
      }
    }

    // Correct the date format for API and querystring
    if (filteredParams.hasOwnProperty('datefrom')) {
      filteredParams.datefrom = $filter('date')(new Date(filteredParams.datefrom), 'yyyy-MM-dd');
    }
    if (filteredParams.hasOwnProperty('dateto')) {
      filteredParams.dateto = $filter('date')(new Date(filteredParams.dateto), 'yyyy-MM-dd');
    }

    return filteredParams;
  };
}
处理所有这些输入的控制器有一个块,其中包含以下内容:

vm.searchParams = {
  datefrom: $state.params.datefrom ? new Date($state.params.datefrom) : void 0,
  dateto: $state.params.dateto ? new Date($state.params.dateto) : void 0,
  lot: $state.params.lot,
  site: $state.params.site || constants.DEFAULT_ANY,
  type: $state.params.type || constants.DEFAULT_TYPE,
  name: $state.params.name
};
本质上,我正在寻找某种方法来获取“自定义”报告的
属性,这样用户在任何时候都只能选择一个单选按钮(因此它们都应该具有唯一的值),但是当传递给控制器时,值应该都是相同的(因此,
6_权重
应作为
权重
传递,
7_等级
应作为
等级
传递)

这可以通过过滤器和正则表达式来完成吗?我已经建立了一个过滤器,它将日期的格式设置为与我交互的API使用的正确格式,如下所示:

<form class="form_report form_performanceReport" data-ng-submit="performance.createReport(performance.save)">
    <fieldset class="form_report-reportType">
        <legend>Select a report type</legend>

        <div class="elements">
            <label>
                <input type="radio" value="grades" data-ng-model="performance.searchParams.type">
                Grade
            </label>

            <label>
                <input type="radio" value="weights" data-ng-model="performance.searchParams.type" >
                Weight
            </label>

            <label>
                <input type="radio" value="calendar" data-ng-model="performance.searchParams.type" >
                Calendar of supply
            </label>

            <label>
                <input type="radio" value="post-mortem" data-ng-model="performance.searchParams.type">
                Postmortem
            </label>

            <label>
                <input type="radio" value="deadweight-gains" data-ng-model="performance.searchParams.type">
                Dead weight gain
            </label>

            <label data-ng-repeat="report in performance.reports">
                <input type="radio" value="{{report.type}}" data-ng-model="performance.searchParams.type">
                {{report.name}}
            </label>
        </div>
    </fieldset>

    <!-- Edited for brevity... -->
</form>
function searchParamsFilter($filter, constants) {
  return function(params) {
    // Create a copy of the params, omit empty or default
    var filteredParams = {};
    for (var i in params) {
      if (params[i] && params[i] !== '' && params[i] !== constants.DEFAULT_ANY && params[i] !== constants.DEFAULT_ANY_ID.name && params[i] !== constants.DEFAULT_ANY_ID.id) {
        filteredParams[i] = params[i];
      }
    }

    // Correct the date format for API and querystring
    if (filteredParams.hasOwnProperty('datefrom')) {
      filteredParams.datefrom = $filter('date')(new Date(filteredParams.datefrom), 'yyyy-MM-dd');
    }
    if (filteredParams.hasOwnProperty('dateto')) {
      filteredParams.dateto = $filter('date')(new Date(filteredParams.dateto), 'yyyy-MM-dd');
    }

    return filteredParams;
  };
}
我对Angular及其工作原理相对较新,因此在此提供的任何帮助都将不胜感激