Angular filter doesn't update when service property changes

Viewed 2128

Perhaps this is a fundamental misunderstanding of Angular scope, but here goes.

I have a service that handles changing a language preference:

languageService.js

function languageService() {
  var language = "en";

  var service = {
    getLanguage: getLanguage,
    setLanguage: setLanguage

  };

  function getLanguage () {
    return language;
  }

  function setLanguage (newLang) {
   language = newLang;
  }

  return service;
}

I also have a filter that formats something:

someFilter.js

function myFilter(languageService) {
  return function(num) {
    var french = languageService.getLanguage() === 'fr';

    if (french) {
      return "is french!"
    } else {
      return "is other."
    }
  }      
}

I try to use this filter in some HTML: Blah blah {{ 'test' | someFilter }}.

It works, but only on load; if I call setLanguage('en'), the binding doesn't change.

1 Answers
Related