【问题标题】:Unable to get ID from Checkbox无法从复选框获取 ID
【发布时间】:2018-02-14 22:22:44
【问题描述】:

我有 HTML 复选框,它们的 id 是从 angular ng-repeat 生成的,当我尝试收集 id 以使用它时,它总是以未定义的形式返回。

$("input:checkbox.time-check-input").each(function () {
    var ruleUnformatted = "";
    var checked = $(this);
    if (checked.is(":checked")) {
        ruleUnformatted = checked.id;
        var name = "Rule" + count;
        settingsObj[name] = ruleUnformatted;
        count++;
    }  
}); 

还有 HTML:

<div class="time-check">
    <input type="checkbox" value="None" ng-click="settings.checked($event)" class="time-check-input" id="{{level.LevelTmsCode}}-{{day.Day}}-open" name="check"/>
    <label for="{{level.LevelTmsCode}}-{{day.Day}}-open" class="time-check-input"></label> <span>Open</span>
</div>

我知道有时可以在香草代码之后加载角度,但我认为在这种情况下这不是问题,因为此代码是通过按下按钮启动的。此外,在 Chrome 中调试时,我可以看到 id,但由于某种原因,选择它不起作用。

【问题讨论】:

  • 请阅读这个stackoverflow.com/questions/13151725/… - 也许你会删除这个问题。
  • ng-repeat向我们展示你的HTML
  • 在我的问题中添加了 HTML
  • 抱歉,您的 HTML 代码无关紧要。这是一个逻辑问题。请阅读我发布的链接stackoverflow.com/questions/13151725/…,也许你会删除 jQuery。不要将 jQuery 与 AngularJS 混合使用。
  • 虽然也不适用于 Vanilla JS

标签: javascript jquery angularjs


【解决方案1】:

你的方法是完全错误的。 , 这是一个使用纯角度的例子。

(function(angular) {
  'use strict';
  angular.module('myApp', [])
    .controller('Controller', ['$scope', function($scope) {
    
      //Create array to hold settings
      $scope.settings = [];
      for (var i = 0; i < 10; i++) {
        $scope.settings.push({
          text: "setting" + (i + 1),
          checked: false
        })
      }

      $scope.showChecked = function() {
        var arr = $scope.settings.filter(function(x) {
          return x.checked;
        }).map(function(x) {
          return x.text
        });
        console.clear()
        console.log(arr)
      }
    }]);
})(window.angular);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
  <div ng-controller="Controller">

    <div class="time-check" ng-repeat="setting in settings">

      <label class="time-check-input">
    <input type="checkbox" ng-change="showChecked()" ng-model="setting.checked" name="check"/> {{setting.text}}
    </label>

    </div>

  </div>
</div>

【讨论】:

    猜你喜欢
    • 2011-12-10
    • 2020-03-08
    • 2018-09-10
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    相关资源
    最近更新 更多