Javascript 作用域中的初始化将覆盖数组值
我面临一个小问题。我几乎完成了我的功能 我有一个表单,其中我有一个选项给用户提交多个项目。点击“添加更多”功能后,动态生成dropdownlist,有助于实现这一点。现在用户可以生成任意数量的dropdownlists。我捕获数组中的值并将其发送到服务器以保存在数据库中 以下是HTML代码:Javascript 作用域中的初始化将覆盖数组值,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我面临一个小问题。我几乎完成了我的功能 我有一个表单,其中我有一个选项给用户提交多个项目。点击“添加更多”功能后,动态生成dropdownlist,有助于实现这一点。现在用户可以生成任意数量的dropdownlists。我捕获数组中的值并将其发送到服务器以保存在数据库中 以下是HTML代码: <form name="form" class="form-horizontal" ng-submit="save()" style="margin-left:220px;">
<form name="form" class="form-horizontal" ng-submit="save()" style="margin-left:220px;">
<table cellpadding="10">
<tr>
<td></td>
<!--data-ng-repeat='item in array'-->
<td style="width: 270px;">
<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="selectedProject[$index]"-->
<!--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>
</td>
<td>
<label id="Label2" style="color: red"></label>
</td>
</tr>
</table>
<div style="margin-left: 200px;">
<input type="submit" class="btn btn-primary" name="Submit" value="Submit" onclick="return validateForm()" />
<a href="#/emp" class="btn">Cancel</a>
</div>
</form>
现在,我没有在服务器端代码中获取所选的值。可能出现的问题有:
Tushar Sharma您应该将所选值存储在模型中,并将模型与ng submit一起发送。我也不建议在select标记中使用ng repeat填充选项。请记住,ng model等于value=“”。模型中的内容就是发送的内容。如果要在加载视图时预选某个对象,也可以使用模型 执行以下操作(示例的小型版本): 模板
嗯,你是用ng提交的吗?如果在提交时执行save()函数,我觉得每次都会重置数组,因此只发送一个空数组。请显示表单标签的显示方式。此外,您不应使用value=“”。。在做角度测量时,让模型做它应该做的。这是表单标签。我正在使用ng提交。那么,我们应该使用什么替代方案呢?以及谈论value=”“这件事。我没有其他选择,因为我们希望使用projectid值进行数据传输。所以我必须接受它。这是必需的,因为我们正在使用卷曲语法插值来填充dropdownlist。如果您这样做,那么在执行我建议的操作时,您将发送所选的projectId。我使用了此技术,但没有获得通过。甚至连正在传递的旧数据都没有。因此,您所做的基本上是将数据存储为名为myForm的对象的属性。是吗?是的,在使用“myForm”作为前缀的表单中选择的所有内容都将在提交时发送,因为只有1个输入才会发送。在SampleEmp.save(myForm)中,您将使用“myForm.project”访问您的projectId。我建议您在$scope.save()内控制台.log(myForm),以查看它在到达该位置时包含的内容。确定。但我基本上想发送一个值数组,也就是一个投影数组。那么在这种情况下我们该怎么办呢。是的,当我想在编辑员工模式下将这些值加载回文本框时,这可以正常工作吗。您是否打算从下拉列表中选择X次,然后将所选projectId(数组)发送到API?好的,让我解释一下。在系统中。可以有n个下拉列表。因此,每个下拉列表将有一个选择。因此,将有n个选择的值发送到要保存的服务器。所以我希望所有这些n值都存储在数组中并发送到服务器。有什么想法吗?
var CreateCtrlEmp = function ($scope, $location, SampleEmp, SampleProj, SampleDes, sharedValues) {
$scope.items = SampleProj.query({ q: $scope.query });
$scope.itemsd = SampleDes.query({ q: $scope.query });
$scope.save = function () {
//issue over here
$scope.item.ProjectId = [];
SampleEmp.save($scope.item);
$location.path('/emp');
};};
<form name="form" class="form-horizontal" ng-submit="save(myForm)" style="margin-left:220px;">
<table cellpadding="10">
<tr>
<td style="width: 270px;">
<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="selectedProject[$index]"-->
<!--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 ng-model="myForm.project" ng-options="test.ProjectId as test.ProjectName for test in items">
<option>-- Choose a Project --</option>
</select>
<li>
</ul>
</div>
</td>
</tr>
</table>
</form>
$scope.save = function (myForm) {
SampleEmp.save(myForm);
$location.path('/emp');
};