2017-06-28 1 views
0

J'utilise une directive personnalisée nommée flag à l'intérieur du cellTemplate de ui-grid. Cette directive accepte simplement un nom de pays (USA ou CANADA) et affiche son drapeau correspondant. La directive fonctionne correctement lorsque la page est chargée pour la première fois. Cependant, plus tard même si je change la valeur de l'indicateur en n'importe quoi, la directive personnalisée ne met pas à jour et affiche le nouveau drapeau. Je ne suis pas sûr de ce qui me manque.directive personnalisée ne soit pas mis à jour à l'intérieur de CellTemplate ui-grid

Plnkr

+0

S'il vous plaît vérifier la réponse! –

Répondre

2

La directive est compilée une fois! Vous devez regarder l'attribut ou définir une liaison bidirectionnelle!

app.directive('flag', function() { 
    var flags = { 
    USA: 'https://github.com/hjnilsson/country-flags/raw/master/png100px/us.png', 
    CANADA: 'https://github.com/hjnilsson/country-flags/raw/master/png100px/ca.png' 
    }; 

    return { 
     restrict: "A", 
     scope: { 
      flag: "@" 
     }, 
     link: function(scope, elem, attrs) { 
      scope.$watch('flag', function(newValue, oldValue){ 
       angular.element(elem).attr('src', flags[newValue]); 
      }); 
     } 
    }; 
}); 

plunkr travail ==>http://plnkr.co/edit/dcHDMEY8MpQnCnm99aDd?p=preview

+0

Y a-t-il une raison pour laquelle ui-grid fait cela? – kensplanet

+0

Cela n'a rien à voir avec ui-grid. Les directives angulaires fonctionnent de cette façon! Quoi qu'il en soit j'ai vu dans la console que ui-grid a des problèmes: il essaie de mettre à jour la portée avec une méthode d'application personnalisée, mais elle n'existe pas! J'essaierais avec une version plus récente! –