2013-02-21 44 views
2

我試圖有條件地顯示/隱藏兩個div使用ng顯示與$範圍內的布爾值,基於AJAX調用完成時。基本上,具有以下佈局:角度ng顯示不工作在IE7/8

<div id="div1" ng-show="!loadingData"> 
    <!--Some markup here--> 
</div> 
<div id="loadingMessage" ng-show="loadingData"> 
    Loading... 
</div> 

功能挑起的變化包含以下內容:

$scope.loadingData=true; 

var promise = dao.doAjaxGet("url"); 

promise.then(function(data){ 
    //Hide loading message 
    $scope.loadingData=false; 
}); 

AJAX調用運行正常,並能正常工作在Chrome,Safari瀏覽器,火狐,而不是我們需要支持的兩個版本的IE - IE7和IE8。加載消息保持隱藏狀態,無論呼叫處於什麼狀態,div1保持可見。任何人都可以提供此建議嗎?

+0

你可以把'{{loadingData}}'看看是否值得到更新? – 2013-02-21 16:01:15

+0

你是對的,價值似乎沒有被應用。進一步的調查顯示,在Chrome中類似的行爲,雖然更零星。爲什麼會這樣? – noiselesslark 2013-02-21 16:15:20

+0

不受$ scope影響。$ apply()也是如此。 – noiselesslark 2013-02-21 16:28:53

回答

1

原來這是與緩存相關的。 Chrome和IE都在第一次通話後緩存ajax通話。我已經設法通過將cache:false引入ajax調用配置來解決問題,但這在IE中似乎沒有效果。如果有人有關於此的更多信息,請告訴我。

2

如果您的控制器中有console.log,請將其清除。它幫助我們在IE8中工作,例如ng-hide

0

下面是一個完全有效的Angular ie7模板。 UES一個非常古老的角,但工程

我的HTML文件 https://cdn.jsdelivr.net/bootstrap/3.3.6/css/bootstrap.min.css'>

<!--[if lte IE 8]> 
    <script type="text/javascript"> 
     // IE7 fix for missing 
     if (!window.console) { 
      var console = { 
       log: function() {}, 
       warn: function() {}, 
       error: function() {}, 
       time: function() {}, 
       timeEnd: function() {} 
      } 
     } 
    </script> 

    <script src="https://cdn.jsdelivr.net/json2/0.2/json2.js"></script> 
<![endif]--> 
<!--[if lte IE 9]> 
    <script type="text/javascript" src="https://cdn.jsdelivr.net/es5.shim/4.5.7/es5-shim.js"></script> 
<![endif]--> 
<script type="text/javascript" src="https://cdn.jsdelivr.net/html5shiv/3.7.3/html5shiv.min.js"></script> 
<script type="text/javascript" src="https://cdn.jsdelivr.net/angularjs/1.1.5/angular.js"></script> 

<script> 
    /** 
    * Main AngularJS Web Application 
    */ 
    var app = angular.module('myapp', []); 
    app.controller('MyPageCtrl', pageController); 

    function pageController($scope) { 

     $scope.languages = [ 
      { 'Id': 1, 'Name': 'French' }, 
      { 'Id': 1, 'Name': 'German' }, 
     ]; 
    }; 

</script> 
</head> 
<body ng-controller="MyPageCtrl"> 

<div class="col-xs-12"> 
    <select name="languagesDropDown" id="languagesDropDown" class="form-control" style="width: 200px;"> 
     <option ng-repeat="language in languages" value="{{language.Id}}">{{language.Name}}</option> 
    </select> 
</div>