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
Может ли кто-нибудь пролить свет на эту проблему?
Ответы
Ответ 1
Я думаю, что вам нужно
template: '<input class="filter" type="text" ng-model="'
+ $rootScope.mymodel + '" placeholder="Nach filtern">'
Fiddle.
Обратите внимание, что вам нужно ввести $rootScope
в свою директиву:
Directives.directive('inputFilter', function($rootScope) {