Le modèle n'est pas mis à jour dans les ng-si
J'ai un comportement étrange dans angulaire de l'application et je ne sais pas si c'est un bug ou d'une limitation connue:
JS:
'use strict';
var ctrl = function ($scope) {
$scope.foo = false;
};
HTML:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app ng-controller="ctrl">
foo: {{foo}}
<div ng-if="foo" style="background-color: #f00;">
<p>foo</p>
</div>
<div ng-if="!foo">
<br/><button ng-click="foo = true;">Show foo</button>
</div>
<button ng-click="foo = true">Show foo</button>
</div>
Je m'attends à ce qu'en cliquant sur un des boutons serait mis foo = true
, mais en cliquant sur le premier bouton (à l'intérieur de la ng-if="!foo"
) ne modifie pas le modèle.
Version testée est 1.2.1
.
Vous devez vous connecter pour publier un commentaire.
ng-if
a son propre champ d'application, donc vous devez utiliser:Mis à jour le violon: http://jsfiddle.net/78R52/1/
ng-if
avant de demander...Ah,
ng-if
crée une nouvelle portée! Donc, "il y a un point dans le nom de modèle"!http://jsfiddle.net/78R52/2/
Comme d'autres l'ont dit, ng-si a son propre champ.
Ce que je veux dire, c'est une mauvaise pratique de mettre des expressions dans la vue. La bonne pratique est d'avoir un champ d'application de la fonction qui est appelée au sein de la vue.