【问题标题】:Angularjs pass ng-repeat checkbox value undefinedAngularjs 传递 ng-repeat 复选框值未定义
【发布时间】:2019-05-25 09:16:49
【问题描述】:

这个问题已经问过了,但这并不能解决我的问题。

我试图将checkbox 值传递给控制器,但我收到了undefined 消息。 我是Angularjs的初学者。

这是我的HTML 代码:

<form class="form-horizontal" name="addForm" novalidate ng-submit="addData(addForm)">
    <div class="form-group">
        <div class="col-sm-3" ng-repeat="directories in formData.getMainDirectories">
            <input type="checkbox" ng-model="directories.main_directories_id.selected" value="{{directories.id}}"><span>  {{directories.name}}</span>
        </div>
    </div>
    <button type="submit" class="btn btn-primary btn-md" button-spinner="loading" ng-disabled="loading">Submit</button>
</form>

我的.js 代码:

$scope.addData = function(form)
{
    $scope.errors = [];
    alert(form.main_directories_id); // alert here
    if(form.$valid)
    {
        $rootScope.loading = true;

        webServices.upload('create', $scope.formData).then(function(getData) {
            $rootScope.loading = false;
            if (getData.status == 200) {
                $sessionStorage.successmessage = getData.data.message;
                localStorage.directory = '';
                $scope.goback();
            } else if (getData.status == 401) {
                $scope.errors = utility.getError(getData.data.message);
                $scope.showerrors();
            } else {
                $rootScope.$emit("showerror", getData);
            }
        });
    }
}

$scope.getMainDirectories = function()
    {
        webServices.get('getMainDirectories').then(function(getData) 
        {
            $rootScope.loading = false;
            if (getData.status == 200) 
            {
                $scope.formData.getMainDirectories = getData.data;
            } else {
                $rootScope.$emit("showerror", getData);
            }
            //console.log(getData.data);
        });
    }

图片:

【问题讨论】:

  • 什么是formData.getMainDirectories
  • @quirimmo:请检查我刚刚更新的问题formData.getMainDirectories 是我获取数据的
  • 你缺少调用函数:这个ng-repeat="directories in formData.getMainDirectories"应该是ng-repeat="directories in formData.getMainDirectories()"
  • @quirimmo: 如果我将 formData.getMainDirectories 更改为 formData.getMainDirectories() 数据没有收到
  • 抱歉,由于$scope中的函数名和formData的属性名相同,造成误解

标签: javascript angularjs select checkbox undefined


【解决方案1】:

终于找到解决办法了

$scope.addData = function(form)
{
    $scope.errors = [];

    for (var i = 0; i < $scope.formData.getMainDirectories.length; i++) {
        if ($scope.formData.getMainDirectories[i].Selected) 
        {
            $scope.formData.main_directories_id.push($scope.formData.getMainDirectories[i].id);
        }
    }

    //console.log($scope.formData.main_directories_id);

    if(form.$valid)
    {
        $rootScope.loading = true;
        webServices.upload('create', $scope.formData).then(function(getData) {
            $rootScope.loading = false;
            if (getData.status == 200) 
            {
                $sessionStorage.successmessage = getData.data.message;
                localStorage.directory = '';
                $scope.goback();
            } else if (getData.status == 401) {
                $scope.errors = utility.getError(getData.data.message);
                $scope.showerrors();
            } else {
                $rootScope.$emit("showerror", getData);
            }
        });
    }
}

HTML:

<div class="form-group">
    <div class="col-sm-3" ng-repeat="directories in formData.getMainDirectories">
       <input type="checkbox" ng-model="directories.Selected" /><span>  {{directories.name}}</span>
    </div>
</div>

【讨论】:

  • 请将此答案标记为正确答案,以便将其从未回答问题列表中删除。
猜你喜欢
  • 1970-01-01
  • 2013-01-27
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多