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 ?
Suppose in our angularjs applications if we want to create a custom watch for some actions then it's better to use $scope. watch function. To use $scope. watch() function in angularjs we need to pass two parameters one is expression / function and second one is listener function.
$watch() function is used to watch the changes of variables in $scope object. Generally the $watch() function will create internally in Angularjs to handle variable changes in application. Let us understand with the following example to understand how to implement $watch().
What is Factory in AngularJS? Factory is an angular function which is used to return the values. A value on demand is created by the factory, whenever a service or controller needs it. Once the value is created, it is reused for all services and controllers. We can use the factory to create a service.
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);
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With