Подтвердить что ты не робот

AngularJS оценивает переменную $rootScope в шаблоне директивы

У меня есть директива, которая создает поле ввода. Мне нужно установить атрибут ng-model этого поля ввода на значение $rootScope переменная. Причина этого в том, что я хочу, чтобы поле ввода находилось в макете, и привязывалось к различным моделям в зависимости от того, какая страница загружена. Я думал, что я установил бы эту глобальную переменную в каждом контроллере и получил бы доступ к ней в Директиве.

ATM переменная жестко закодирована

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

И Директива

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">'
    }

});

Он отображается как

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

а текст внутри поля ввода - значение переменной mymodel. На панели console.log отображается

search.name
search.name  

Может ли кто-нибудь пролить свет на эту проблему?

4b9b3361

Ответ 1

Я думаю, что вам нужно

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

Fiddle.

Обратите внимание, что вам нужно ввести $rootScope в свою директиву:

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