glasspill glasspill - 1 year ago 119
AngularJS Question

AngularJS evaluate $rootScope variable in directive template

I have a directive that creates an input field.
I need to set the ng-model attribute of this input field to the value of a $rootScope
The reason behind this is that I want the input field to be in the layout, and bind to different models depending on what page is loaded.
I thought I'd set this global variable in each controller and access it in the Directive.

ATM the variable is hard coded$rootScope){
$rootScope.mymodel = '';

And the Directive

Directives.directive('inputFilter', function(){
restrict: 'E',
controller: function($scope, $rootScope){

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


It gets rendered as

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

and the text inside the input field is the value of mymodel variable. The console.log shows

Could anyone please shed some light on this issue?

Answer Source

What I think you want is

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


Note that you will need to inject $rootScope into your directive:

Directives.directive('inputFilter', function($rootScope) {
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download