【问题标题】:How do I get the values of checkboxes when using ng-repeat?使用 ng-repeat 时如何获取复选框的值?
【发布时间】:2014-08-24 05:21:03
【问题描述】:

文件view.html中的代码:

<label ng-repeat = "agents in acesslevel |filter:{acesslevel: 'Agent'}">
    <div class="col-xs-2">
        <input type= "checkbox"
               ng-model="agentsSelected"
               checklist-value="agents.name"
               ng-true-value=agents ng-false-value="'NO'">
        {{agents.name}}
    </div>
</label>

accesslevel 是我从数据库中获取的 JSON 格式数据。

例如,

{
  "acesslevel": "Quality",
  "dob": "1995-02-03",
  "name": "anjali",
  "password": "tanya",
  "username": "anju",
  "createdAt": "2014-07-02T16:26:26.816Z",
  "updatedAt": "2014-07-02T16:26:26.816Z",
  "id": "53b432b230aaa394278522ca"
},

{
  "acesslevel": "Agent",
  "dob": "1995-02-03",
  "name": "christopher",
  "password": "tanya",
  "username": "anju",
  "createdAt": "2014-07-02T16:26:48.170Z",
  "updatedAt": "2014-07-02T16:26:48.170Z",
  "id": "53b432c830aaa394278522cb"
}

HTML 中的这段特殊代码在访问级别显示代理的名称(在上述情况下,它将显示 christopher)

如何获取控制器中选中复选框的值?

我想将此选定代理的数据插入到我的数据库服务器的新表中。

【问题讨论】:

  • 您希望复选框影响什么? ng-model 是复选框绑定的对象,但是您将其绑定到所有代理的同一对象?如果您使用ng-model="agents.isChecked",您可以获得控制器中每个访问级别的 isChecked 值。
  • @Patrick 我想要在我的控制器中点击的所有代理,这样我就可以在我的 mongodb 服务器上发送它。
  • 为什么要将复选框绑定到agentsSelected而不是agents实例上的属性?这不能解决你的问题吗?
  • 没有,agentsSelected 在我的控制器中给了我未定义的信息。
  • 什么?我告诉您使用代理实例的属性,而不是 agentSelected(绑定到您的特定 $scope)。您不能使用ng-model="agents.isChecked 并在您的控制器中读取该属性吗?您尚未指定要影响的布尔值。

标签: javascript angularjs checkbox angularjs-ng-repeat


【解决方案1】:

问题是您使用的是绑定到(我想是)数组的 ng-model,但 Angular 需要一个布尔值(真或假)。

如果您改为绑定到过滤后的访问级别数组实例的属性,您可以稍后在控制器中提取该数据

<label ng-repeat = "agents in acesslevel |filter:{acesslevel: 'Agent'}">
    <div class="col-xs-2">
        <input type= "checkbox"
               ng-model="agents.isSelected" <!-- bind to another value -->
               checklist-value="agents.name"
               ng-true-value="agents"
               ng-false-value="'NO'">
        {{agents.name}}
    </div>
</label>

如果您有一种方法可以将值提交到后端,您的控制器可以稍后访问此属性。

$scope.submit = function() {
    var selectedAgents = [];
    angular.forEach($scope.acesslevel, function (agent) {
        if (agent.acesslevel == 'Agent' && agent.isSelected) {
            selectedAgents.push(agent);
        }
    });
    // Here you can make calls to your backend with the selectedAgents variable.

};

【讨论】:

  • 工作,非常感谢。因此很烦 Angular-js 的新手,一周前才开始,所以不知道很多。顺便说一句,有什么书或文章推荐用于角度?还有关于通过 ng-repeat 以角度方式使用 select2 的任何想法?
猜你喜欢
  • 2016-01-10
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 1970-01-01
  • 2014-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多