代码之家  ›  专栏  ›  技术社区  ›  Ramesh S

Angularjs pass ng repeat复选框值未定义

  •  0
  • Ramesh S  · 技术社区  · 6 年前

    我想通过考试 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);
            });
        }
    

    图片: enter image description here

    1 回复  |  直到 6 年前
        1
  •  0
  •   Ramesh S    6 年前

    我终于找到了解决办法

    $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>
    
    推荐文章