我有一个选择列表。我使用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
}
答案 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>