Suppose I have a custom directive, named my-directive
, that has the default scope settings (scope: false
, which means it shares the scope of the (parent) controller enclosing the directive), and I have a function my_function
, attached to the controller's scope. I wonder if in the custom directive's link function if I can use scope.$watch
to observe when my_function
executes?
Here's a code for illustration:
<div ng-controller="MyCtrl">
<my-directive></my-directive>
</div>
the controller:
app.controller('MyCtrl', function($scope) {
$scope.my_function = function() {
...
}
});
the custom directive:
app.directive('myDirective', function() {
return {
restrict: 'E',
[scope: false,]
...
link: function(scope, element, attrs) {
// can I scope.$watch my_function here to check when it executes?
}
}
});
Update:
Here's my reason for asking this:
When my_function
(which essentially is a retrieve function through $http.get
) executes, it should update an object, say my_data
. If I try to scope.$watch
my_data
, there may be a situation where my_function
executes and there is no change in my_data
(such as when I edit an entry in my_data
and decides to cancel the update anyway), thus a portion of the code that I want to execute in link function is not executed. So I want to make sure my code in link function executes whenever my_function
executes, whether or not there is a change my_data
.