Close.
You need to call this.markDone();
this is set differently inside the forEach loop, so you need to set it
explicitly or catch it earlier and set it to something else, like that
Try this:
function func1() {
console.log("func 1");
this.markDone();
}
And:
this.execute = function() {
var that = this;
funcList.forEach(function(func){
func.apply(that);
});
}

As others have mentioned in the comments, this will work for you:
<a href="#"
ng-click="searcher(update.host)">{{update.host}}</a>
</td>
Check out the documentation for ng-click, which indicates it accepts
an expression (so you don't need the {{binding}} syntax).

The watch utility executes commands with sh -c. So, if you want to
execute a zsh function, you need to execute zsh explicitly. For
instance, if your functions are defined in a /path/to/functions file,
you can do:
watch 'echo hello | zsh -c "source /path/to/functions; my_fun"'
or
watch 'zsh -c "source /path/to/functions; echo hello | my_fun"'
But it is probably better to write a script with e

It depends if you need to stub it (i.e. capture and change its
behaviour) or if it is enough to spy on it (watch it). Either way, you
would be better off injecting it, so you can control it.
I have been using sinon http://sinonjs.org quite happily.
If you want to spy on it, i.e. watch its behaviour without changing
it, then before calling it, you would do
var spy = sinon.spy(GetAccountDetails)