我在我的AngularJS應用程序中有一個表單,其中包含帶默認選項的下拉列表。我使用ng-init和ng-selected來實現這一點。它在Chrome中運行良好,但在Internet Explorer 9中,當我第一次加載頁面時,下拉列表中顯示的是文字angularjs表達式,即「{{showMethod(args)}}」。當我去改變選項時,選項就在那裏。這只是最初的表達不表達。AngularJS默認選項中選擇不工作在IE9
這裏是我的HTML代碼:
<td>
<div ng-if="var.methods.length==0">NA</div>
<div ng-if="var.methods.length>0">
<select ng-init="selectedmethods[var.id]=defaultMethod(var.id,var.methods)" ng-model="selectedmethods[var.id]" >
<option ng-repeat="method in var.methods" value="{{method.id}}" ng-selected="isMethodSelected(var.id,method)">{{ showMethod(method,var.id)}}</option>
</select>
</div>
這又是一個NG重複的部分。
最初,我使用ng-init將所選方法設置爲該變量的默認方法。使用ng-selected和一個名爲isMethodSelected的方法,我通過檢查selectedmethods對象來檢查用戶是否選擇了該方法,如果不是,請檢查該方法是否爲默認方法。 然後,我使用showMethod函數顯示方法名稱,我添加了它來查看這是否有助於IE中的問題(它沒有)。我之前所做的只是表達式method.formattedMethodName。
這裏是我的JS代碼部分:
$scope.isMethodSelected = function(varid,method) {
var sel = false;
if($scope.request.specsByVar.hasOwnProperty(varid) && $scope.request.specsByVar[varid].method.id==method.id) {
sel = true;
} else if(!$scope.request.specsByVar.hasOwnProperty(varid) && method.defaultMethod) {
sel = true;
}
return sel;
}
$scope.defaultMethod = function(varid,methods) {
var defaultMethod;
if($scope.request.specsByVar.hasOwnProperty(varid)) {
defaultMethod = $scope.request.specsByVar[varid].method.id;
} else {
for (var i = 0; i < methods.length; i++) {
if(methods[i].defaultMethod) {
defaultMethod = methods[i].id;
break;
}
}
}
return defaultMethod;
}
$scope.showMethod = function(method,varid) {
if(method) {
return method.formattedMethodName;
} else {
return $scope.selectedmethods[varid].formattedMethodName;
}
};
這顯然是一個IE瀏覽器的問題。有沒有人有辦法解決嗎?
感謝, 奧爾加