1

我几乎解决了我的问题,现在只需将数据发送到服务器。

在我的场景中,我有一个包含员工详细信息和项目的表单(可以是多个)

现在当用户想要添加项目时,他必须点击“添加项目”。这将在页面上生成一个带有项目列表的下拉列表。

这可以是任意数量。现在,当他选择了项目(比如 5)后,他将单击提交,将数据发布到服务器。

我想要一个数组中下拉列表的所有选择并将其发送到保存功能。

HTML 代码:

<div>
                        <div ng-controller="AlertDemoCtrl">
                            <alert ng-repeat="alert in alerts" type="alert.type" close="closeAlert($index)" ng-model="ProjectId[item]">
                        <ul style="list-style-type: none; margin-left: 0px;">
                            <li >
                                <!--data-ng-model="ProjectId[item]"-->
                                <!--data-ng-model="test.ProjectId"-->
                                <!--<select data-ng-model="test.ProjectId" 
                                data-ng-options="test.ProjectId as test.ProjectName for test in items" id="Project">-->
                                <select>
                                    <option value="">-- Choose a Project --</option>
                                    <option ng-repeat="item in items" value="item.ProjectId">{{item.ProjectName}}</option>
                                </select>
                                <button type="button" ng-click="closeAlert($index)"><img src="delete.png" alt="Remove" style="height:20px; width:20px;" /></button>
                            </li>
                        </ul>
                    </alert>
                            <button class='btn' type='button' ng-click="addAlert()">Add Projects</button>
                        </div>
                    </div>

alert 是将新的下拉列表添加到表单的自定义指令。创建用于添加新员工数据的控制器。

var CreateCtrlEmp = function ($scope, $location, SampleEmp, SampleProj, SampleDes, sharedValues) {
$scope.items = SampleProj.query({ q: $scope.query });
$scope.itemsd = SampleDes.query({ q: $scope.query });
alert("Entered the saving function");
$scope.save = function () {
    $scope.item.ProjectId = [];
    SampleEmp.save($scope.item);
    $location.path('/emp');
};};

帮助表示赞赏。

谢谢一吨!

图沙尔·夏尔马

4

1 回答 1

0

我认为您想将这样的数据结构发布到服务器?

{
    employee: {
        name: "Tushar",
        projects[{
           name: "Angular App"
        }]
    }
}

您可以在控制器中使用提交处理程序:

function EmployeeCtrl($scope) {
    $scope.employee = {projects:[]};  // Initialise data structure
    $scope.submit = function() {
      console.info($scope.employee);
      // Convert employee data structure to string an POST to server
      postToServer(JSON.stringify(angular.copy($scope.employee)));
    }
}

angular.copy 删除项目项上的 $$hashKey 属性。

https://github.com/angular/angular.js/issues/1875

表单看起来像这样:

<form ng-submit="submit()">
    <input ng-model="employee.name">
    <div ng-repeat="project in employee.projects">
        <input ng-model="project.name">
    </div>
    <button type="submit">Save</button>
</form>
于 2013-10-23T10:45:25.873 回答