0

У меня есть следующий код:IE8 падает с AngularJS и динамическим контентом

<blockquote class='mt20'> 
    <p><span>&ldquo;</span><span>{{iq.quote}}</span><span>&rdquo;</span></p> 
    <footer><cite class="dark-grey">{{iq.author}}</cite></footer> 
</blockquote> 

По какой-то причине, это вызывает IE8 сбой. Я сделал много отладки и обнаружил, что, когда объект Декомпрессиметра IQ содержит только цитату:

{quote:"some quote"} 

браузера не врезаться. Это только сбой и с цитатой, и с автором.

Я использую специальную функцию для получения моих данных. Это выглядит так:

this.get = function(){ 
    var arr = {}; 
    if(!arr.length){ 
     $http.get('url').success(function(data){ 
      $.extend(arr, data); 
     }); 
    } 
    return arr; 
} 

Я использую это, потому что объект автоматически привязан, поэтому мне не нужно его смотреть. Похоже, что авария происходит при расширении данных к объекту, когда представление пытается обновить. Есть предположения?

ответ

0

Я смог исправить это, изменив привязку содержимого, используя {{}} для ng-bind.

<blockquote> 
    <p><span>&ldquo;</span><span ng-bind="iq.quote"></span><span>&rdquo;</span></p> 
    <footer><cite ng-bind="iq.author"></cite></footer> 
</blockquote> 

У меня есть предположение, что сноска элемент HTML5, в сочетании с {{}} связывания содержимого и динамического обновления вызвало утечку памяти, разбившийся IE8, но я не могу доказать это. Я знаю, что когда контент настроен и не изменен (например, что произойдет, если вы использовали $ http.get вместо моего метода), браузер не сбой. Я также использовал:

var obj = {} 

и:

delete obj.key 

Я изменил это:

var obj = new Object() 

на основе этой должности: https://markfeimer.wordpress.com/2014/05/23/internet-explorer-8-javascript-delete-keyword-bug/

Смежные вопросы