web-dev-qa-db-fra.com

AngularJS évalue la variable $ rootScope dans le modèle de directive

J'ai une directive qui crée un champ de saisie. J'ai besoin de définir l'attribut ng-model de ce champ d'entrée sur la valeur d'une variable $ rootScope. La raison derrière cela est que je veux que le champ de saisie soit dans la mise en page et se lie à différents modèles en fonction de la page chargée. J'ai pensé définir cette variable globale dans chaque contrôleur et y accéder dans la directive.

ATM, la variable est codée en dur

App.run(function($rootScope){
    $rootScope.mymodel = 'search.name';
})

Et la directive

Directives.directive('inputFilter', function(){
    return{
        restrict: 'E',
        replace:true,
        controller: function($scope, $rootScope){
            console.log($scope.mymodel);
            console.log($rootScope.mymodel)

        },
        template: '<input class="filter" type="text" ng-model="mymodel" placeholder="Nach filtern">'
    }

});

Il est rendu comme

<input class="filter ng-pristine ng-valid" type="text" ng-model="mymodel" placeholder="Filter">

et le texte à l'intérieur du champ de saisie est la valeur de la variable mymodel. Le console.log montre

search.name
search.name  

Quelqu'un pourrait-il nous éclairer sur cette question?

12
glasspill

Je pense que tu veux

template: '<input class="filter" type="text" ng-model="' 
  + $rootScope.mymodel + '" placeholder="Nach filtern">'

Violon .

Notez que vous devrez injecter $rootScope dans votre directive:

Directives.directive('inputFilter', function($rootScope) {
13
Mark Rajcok