在异步调用之后,只有第一个字符显示在(HTML)列表框元素中

时间:2014-01-30 17:21:57

标签: javascript html ajax angularjs internet-explorer-9

我对AngularJS / IE9有疑问。

我有患者名单的模态窗口。

    <div class="modal-header">
        <h3 class="modal-title">Patient list</h3>
    </div>
    <div class="modal-body">
    <div>
         <input class="form-control" ng-model="searchText"/>
    </div>
    <div class="col-md-12">
        <select size="15" class="list-group">
            <option ng-repeat="patient in patientList | filter:searchText" ng-click="..">
                {{patient.patientName}}
            </option>
        </select>
    </div>

用$ http工厂

加载的患者列表
.factory('patientService', function ($http) {
    return {
        getPatientList: function () {
            return $http.get("Api/Patient/GetFullPatientList")
                .then(function (results) {
                    return results.data;
                }, function (results) {
                    console.log("Error: " + results.data + "; " + results.status);
                });
        };

因此,此服务注入PatientController

function PatientController($scope, $modalInstance, patientService) {
    $scope.patientList = patientService.getFullPatientList();
}

在Chrome,FF,Safari中,我可以在UI上正确查看患者列表框,但在IE9中,我会看到以下屏幕:http://take.ms/m0mFz 只显示列表项中的第一个符号。

当我在(例如)简单列表上替换列表框时 - 一切正常。

我认为,这是因为数据加载了异步调用,IE没有刷新数据。 所以,我试着这样做:

    function PatientController($scope, $modalInstance, patientService) {
        $scope.patientList = patientService.getFullPatientList().then(function(data){
            $scope.patientList = data;
            $scope.$apply();
        });
    }

但它也没有带来结果。

请帮助或建议我:) 谢谢!

1 个答案:

答案 0 :(得分:0)

问题在于列表框显示不正确。默认情况下,在IE9中,未指定选择样式中的“display”属性。

我用JQuery代码解决它:

patientService.getFullPatientList().then(function(data) {
    $scope.patientList = data;
    $('.list-group').width('95%'); //SOLVE
});