【问题标题】:Checkboxes in AngularJSAngularJS 中的复选框
【发布时间】:2014-07-17 22:13:21
【问题描述】:

我有一个表格,其中包含带有复选框的行。当我点击一个复选框时,我希望将 ID 属性的值推送到对象中。

我有以下 HTML 代码:

<tr ng-repeat="info in test">
    <td>{{info.stracka}}</td>
    <td>{{info.tid}}</td>
    <td><input type="checkbox" id="{{info.id}}" ng-model="compare.checkbox">
</tr>

如您所见,我的 ng-model 连接到一个比较对象。如何将 ID 属性的值添加到比较对象? ng-model 似乎只能将一个复选框的值绑定到控制器中的变量。我该如何解决这个问题?

这是我的控制器:

as.controller('Test', function($scope, $http, $rootScope, testFactory)
{   
    $http.get($rootScope.appUrl + '/nao/test/test')
        .success(function(data, status, headers, config) {
            $scope.test = data.data;
    });

    $scope.form = {};
    $scope.compare = {};
    $scope.submitForm = function(isValid) {
        if(isValid) 
        {   
            /*testFactory.testFactoryMethod(function($http) {
                $scope.test = data;
            });*/
            $http.post($rootScope.appUrl + '/nao/test', $scope.form)
            .success(function(data, status, headers, config) {
                console.log(data);
                $scope.test.push($scope.form);
                $scope.test.push(data);
            }).error(function(data, status) {

            });
        }
    };
});

【问题讨论】:

  • 尝试使用 ng-checked 来管理检查
  • @chf:如何将 ID 属性的值获取到对象中?
  • 您想在$scope.compare.checkbox 变量中包含 ID 属性值吗?

标签: javascript angularjs checkbox


【解决方案1】:

您的问题是将所有复选框绑定到compare.checkbox

如果您将$scope.compare.checkbox = []; 添加到控制器 和 而是使用

ng-model="compare.checkbox[info.tid]

假设info.tid 是一个数字并且是唯一的,您应该能够通过使用从控制器访问复选框

$scope.compare.checkbox[thetidhere];

【讨论】:

  • 当我写 $scope.compare.checkbox = [];我收到此错误消息:错误:$scope.compare 未定义
  • 你首先需要 $scope.compare = {};然后 $scope.compare.checkbox = [];
  • 如何查看 $scope.compare 中的所有 id?
  • 使用 for 循环遍历数组
【解决方案2】:

要推送额外数据,您应该使用ng-click,方式如下:

<input 
    type="checkbox" id="{{info.id}}" 
    ng-model="compare.checkbox" 
    ng-click="compare.id_attribute = info.id" 
/>

【讨论】:

  • 谢谢。控制器应该是什么样子?当我点击一个复选框时,所有的复选框都被选中,这是错误的。
  • 那是因为您只为所有这些模型使用一个模型。我对您的应用程序了解不多,但也许删除此复选框的模型就足够了。删除ng-model="compare.checkbox"
猜你喜欢
  • 1970-01-01
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2015-12-11
  • 2015-02-12
  • 1970-01-01
相关资源
最近更新 更多