watch factory variable with Angular

10,661

You had a wrong syntax. It should return the service variable MenuFactory.Control & also there is no need of true in the end as you don't have object to check object equality.

Code

$scope.$watch(function(){
   return MenuFactory.Control;
}, function(newValue, oldValue){
    console.log(newValue + ' ' + oldValue);
    console.log(MenuFactory.Control);
});
Share:
10,661
Pierolain
Author by

Pierolain

By day : Web Developper Junior & Student By night : Films / Series / Video game player / Cooking / sometimes sleep

Updated on July 24, 2022

Comments

  • Pierolain
    Pierolain almost 2 years

    My single page application has 2 controllers : the first is for my main menu and the second is for the view. They share data with this factory

    myApp.factory('MenuFactory', function(){
    var factory = {
        Monitor: "doneJob",
        Control: "",
        Report: "",
        Display: "",
        setMonitor: function(value){
            factory.Monitor = value;
        },
        setControl: function(value){
            factory.Control = value;
        },
        setReport: function(value){
            factory.Report = value;
        },
        setDisplay: function(value){
            factory.Display = value;
        }
    
    };
    return factory;
    });
    

    I would like to watch change on factory.Control, but i can't make it works.

    When i try this:

    $scope.$watch(function(){MenuFactory.Control}, function(NewValue, OldValue){
        console.log(NewValue + ' ' + OldValue);
        console.log(MenuFactory.Control);
    }, true);
    

    I get "undefined undefined" and "Process" in console. Is there any problem with my $watch implementation for this factory ?

  • Pankaj Parkar
    Pankaj Parkar almost 9 years
    @Pierolain Glad to help you..Thanks :)