2014-04-25 36 views
0

我在ASP.NET MVC4中使用AngularJs。首先,我使用剃刀语法生成下拉菜单。选择一个下拉式的特定选项AngulaJs

@Html.DropDownList("packageName", (IEnumerable<SelectListItem>)ViewBag.packageName, "No Data Available", new { ng_model = "subForm.packageName" }) 

然后我重新填充我的下拉是这样的:

$('#packageName').empty(); 
$('#packageName').append($('<option />').val('').text('Select Package')); 
$('#packageName').append($('<option />').val(1).text('Package 1')); 

现在我想设置一个选项,在我的角器来选择这样的:

$scope.subForm.packageName = '1'; 

但这生成一个无效的选项。错误是这样的:

<select ng-model="subForm.packageName" name="packageName" id="packageName" class="ng-pristine ng-valid"> 
    <option value="? string:1 ?"></option> 
    <option value="">Select Package</option> 
    <option value="1">Package 1</option> 
</select> 

为什么第一个选项会生成?有没有解决方法?

+0

“Angular way”将使用** ['ngOptions'](https://docs.angularjs.org/api/ng/directive/select)**。 – gkalpak

+0

雅,我知道。 – raisul

+0

然后继续使用它。 – gkalpak

回答

0

由于指令如何实施,它需要知道可用的选项值,以便将关联模型的值映射到选项。
你可以使用ngOptions。这是很容易:

<!-- In the VIEW: --> 
<select id="packageName" ng-model="subForm.packageName" 
     ng-options="packageName for packageName in packageNames"> 
    <option value="">Select Package</option> 
</select> 

/* In the CONTROLLER: */ 
$scope.packageNames = [...]; 

$scope.subForm = { 
    packageName: $scope.packageNames[0] 
}; 

还参见本short demo

相关问题