0

我有一個使用角度和火力的應用程序。它使一個電話到我的火力URL和確實在返回的對象中的2項的簡單NG重複。火力地堡和AngularFire錯誤僅在IE8

該應用程序在每個瀏覽器除了IE 8的偉大工程,我測試了它在IE 8常常和它的工作。這並不是說我已經推出了,有時在過去的幾天就開始收到此錯誤。我已經在我的腦海中的應用超過這個時間的變化,但沒有什麼會改變方式IE8將呈現它。

在IE8的錯誤是簡單地:

SCRIPT5007:無法設置屬性「藝術家」的未定義的或空引用 firebase.js,第1點的字符28

我已經簡化的代碼下至基礎知識,我仍然得到錯誤。

您可以在下面看到,藝術家是$ scope.xmatch中的對象的名稱,我試圖用ng-repeat重複。我希望得到這個工作,所以任何幫助將不勝感激。

app.js

(function() { 
'use strict'; 
angular.module('ipremiosApp', ['firebase']).config 
}).call(this); 

global.js

(function() { 
    'use strict'; 
    angular.module('ipremiosApp').controller('GlobalCtrl',['$scope','$timeout', function($scope, $timeout) { 
}]); 

angular.module('ipremiosApp').controller('MatchCtrl',['$scope','$timeout','$routeParams','angularFire', function($scope,$timeout,$routeParams,angularFire) { 

    var url = 'https://my.firebaseio.com/myfirebase'; 
    $scope.xmatch = angularFire(new Firebase(url), $scope, 'xmatch'); 

}]); 
}).call(this); 

的index.html

<!doctype html> 
<!--[if lt IE 7]>  <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> 
<!--[if IE 7]>   <html class="no-js lt-ie9 lt-ie8"> <![endif]--> 
<!--[if IE 8]>   <html class="no-js lt-ie9"> <![endif]--> 
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]--> 
<head> 
    <meta charset="utf-8"> 
    <title>test</title> 
</head> 
<body data-ng-app="ipremiosApp" data-ng-controller="GlobalCtrl"> 
    <!--[if lt IE 9]> 
    <script src="bower_components/es5-shim/es5-shim.js"></script> 
    <script src="bower_components/json3/lib/json3.min.js"></script> 
    <![endif]--> 

    <div class="main-body match-page" data-ng-controller="MatchCtrl"> 
    <div id="test" class="artist" data-ng-repeat="artist in xmatch.artists | orderBy: 'votes':true"> 
    {{artist.name}} 
    </div> 
</div> 

<script src="bower_components/jquery/jquery.js"></script> 
<script src="bower_components/angular/angular.min.js"></script> 
<script src="https://cdn.firebase.com/v0/firebase.js"></script> 
<script src="bower_components/angular-resource/angular-resource.js"></script> 
<script src="bower_components/angular-cookies/angular-cookies.js"></script> 
<script src="bower_components/angular-sanitize/angular-sanitize.js"></script> 
<script src="bower_components/angular-fire/angularfire.js" type="text/javascript"></script> 
<script src="scripts/app.js"></script> 
<script src="scripts/controllers/global.js"></script> 

</body> 
</html> 

回答

0

它看起來像被引入到angularFire在this commit的錯誤影響IE 8只。我已經filed an issue here

該問題源於$scope.xmatch未在angularFire()初始化之前被聲明的事實。您可以解決這個問題,直到解決方案發布前,由它宣佈到一個空的對象,像這樣:

new Firebase(url).child('test').set('happy'); 
$scope.xmatch = {}; 
angularFire(new Firebase(url), $scope, 'xmatch'); 

此外,在一個側面說明,你必須在你的代碼個微妙的問題以後會咬你。你不小心從angularFire設置$ scope.xmatch到返回值(承諾):

// don't do this 
$scope.xmatch = angularFire(new Firebase(url), $scope, 'xmatch'); 

它似乎在這裏工作了,沒有任何負面影響,因爲你還沒有使用$ scope.xmatch任何東西在數據從Firebase到達並覆蓋錯誤聲明之前,但您肯定不希望將該哈希設置爲承諾值:)

+0

謝謝。我會試試這個。並感謝您指出另一個錯誤。我知道這並不完全。 – bennewton999