2014-04-25 38 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

相關問題