2017-11-06 10 views
0

Safariでのみ発生するような問題が発生しました:SafariがAngularJSバインディングを正しくレンダリングしないのはなぜですか?

TL; DR - ここでは私が以下で説明することの明白な例です(明らかにサファリでプランクを実行する場合にのみ示されます) https://plnkr.co/edit/t6Ts2DlhV84C7CLFzdui?p=preview

<html> 
<head> 
    <script src="https://code.angularjs.org/1.6.6/angular.js"></script> 
    <script> 
    var app = angular.module('safariBug', []); 
    app.controller('main', function($scope) { 
     $scope.mytext = "Here is a bunch of text, some of which will continue to be displayed."; 
     $scope.update = function() { 
     $scope.mytext = "New line of text."; 
     } 
    }); 
    </script> 

</head> 

<body ng-app='safariBug'> 
    <div ng-controller='main'> 
    <div style='height:300px;width:300px;font-size:48px'>{{mytext}}</div> 
    <input type='button' ng-click='update()' value='Update Text' /> 
    </div> 
</body> 

</html> 

データバインド変数を使用して、ビュー内の文字列を表示し、それが即座に表示されますが、古い値が長い場合、それは消去されません新しい値を文字列に置き換えます。たとえば、文字列が「元の文章」で、その文字列が「新しいテキスト」に置き換えられた場合、「新しい文章センテンス」などが表示されます。 html要素のスタイルが変更されるとすぐに、古いテキストを削除してSafariに要素を正しく再描画させるように見えます。

答えて

1
<div style='height:300px;width:300px;font-size:48px' ng-bind="mytext"</div> 

この方法を試してください。

+0

ありがとうございました! SafariのバグであるAngularJSのバグですか、それとも間違っていますか? – eamers

+0

これは角度のデータをバインドする別の方法であり、upvoteはあなたから評価されます。 –

+0

upvoteの不足のため申し訳ありませんが、私は十分な影響力ポイントを持っていませんでした – eamers

関連する問題