在Angularjs中动态添加选择选项

时间:2017-10-25 10:46:26

标签: angularjs asp.net-mvc

我有一个选择列表。我使用ViewBag填充列表。但是在少数情况下,需要将动态项添加到所选列表中。

我可以添加这些项目但是在获取这些值时,它会为那些新添加的项目返回null。使用' ViewBag'获取其他项目的值没有问题。

HTML:

 <select ng-model="JobNo" id="JobNo" name="JobNo" class="myClass" style="width:100%;"> 
          <option ng-repeat="item in JobList.Data" value="{{item.ProjectCode}}">{{item.ProjectDescription}}</option> 
 </select>
<input type="button" value="Save Data" ng-click="SaveData()">

控制器:

$scope.JobList =  @Html.Raw(Json.Encode(ViewBag.ProjectCode)) 
//Added new item here
$compile(angular.element($("#JobNo option")).eq(0).after($compile('<option value="ALL"> -- ALL -- </option>')($scope)));

$scope.SaveData=function () { 
                 alert($scope.JobNo); // it's show 'null' when I select "--ALL--" but no problem in other cases 
               } 

2 个答案:

答案 0 :(得分:1)

在Controller中,在第一个索引处添加Joblist.Data数组中的新项,而不是DOM注入。

$scope.JobList =  @Html.Raw(Json.Encode(ViewBag.ProjectCode)) 
//Added new item here
$scope.JobList.Data.unshift({
    ProjectCode: 'ALL',
    ProjectDescription: ' -- ALL -- '
})

你可以尝试在html中添加一个选项并从控制器中删除选项注入,这里是代码,

<强> HTML

<select ng-model="JobNo" id="JobNo" name="JobNo" class="myClass" style="width:100%;"> 
    <option value="ALL"> -- ALL -- </option>
    <option ng-repeat="item in JobList.Data" value="{{item.ProjectCode}}">{{item.ProjectDescription}}</option> 
</select>
<input type="button" value="Save Data" ng-click="SaveData()">

<强>控制器

$scope.JobList =  @Html.Raw(Json.Encode(ViewBag.ProjectCode)) 

$scope.SaveData=function () { 
    alert($scope.JobNo); 
} 

答案 1 :(得分:-1)

试试这个:

<select ng-options="listname for refvar in displayname track by value" ng-model="selected value's variable"></select>