Maison > Questions et réponses > le corps du texte
下面的例子中,model被修改了,但是界面没被更新
例子:
http://jsbin.com/relanafohu/4/edit
仅有的幸福2017-05-15 16:52:52
Toutes les modifications de modèle dans les rappels d'opérations asynchrones qui ne sont pas connues d'Angular doivent utiliser la méthode apply pour notifier explicitement à angulaire de mettre à jour la vue. Pour plus de détails, consultez la documentation d'angular sur apply.
De plus, si angulaire est en cours de mise à jour (cercle de digestion) et que apply est appelé, l'erreur suivante apparaîtra :
Error: $apply already in progress
Afin d'éviter cette erreur, vous pouvez d'abord déterminer l'état actuel, et vous pouvez directement utiliser la méthode encapsulée suivante :
js
safeApply = function( scope, fn) { var phase = scope.$root.$$phase; if(phase == '$apply' || phase == '$digest') { if(fn && (typeof(fn) === 'function')) { fn(); } } else { scope.$apply(fn); } }
Lorsque vous devez définir le modèle, il suffit :
js
safeApply( $scope, function(){ // 在这里写你修改model的代码 });
Plus de détails sur cette erreur peuvent être trouvés dans cette question stackoverflow