508177 (4) [Avatar] Offline
#1
Hello Again...

I believe there may be an error in the Signal Binding Behavior listing 5.11 line 12...

https://livebook.manning.com#!/book/aurelia-in-action/chapter-5/v-3/point-266-73-73-0

currently reads:

disabled.bind="canAdd() & signal:'can-add-signal'">


but throws error that canAdd is not a function...

works when parens removed

disabled.bind="canAdd & signal:'can-add-signal'">


if that is indeed a mistake, could you maybe mention why it throws an error with the parens and not without...

thanks again,
Derek
Sean Hunter (29) [Avatar] Offline
#2
Thanks Derek,

I looks like you're correct there (most likely a typo in the listing). Will check into it when I get some time later today smilie.

Cheers,
Sean
Sean Hunter (29) [Avatar] Offline
#3
Hi Derek,

It looks like the listing is correct here. This should have parenthesis. I've put together a GistRun to show this in action:

https://sean-hunter.io/signal-binding-behavior


I was able to re-produce the error by not modifying the canAdd function and leaving it as a getter function:

  get addDisabled(){
    return this.title.length === 0;
  }


This changes it from being a function to a getter, and hence the exception.

If you change it to be this, you should get the desired result:

 addDisabled(){
    return this.title.length === 0;
  }


I'll look at re-working this example as it's not immediately clear what's going on. In fact the function is used in this case because it's only called once (when the view is loaded and binding is run), which means that it needs the signaler to execute to tell the binding to update. The correct approach to this problem in an app would be to either have the expression in-line, or to use a computed decorator.

Cheers,
Sean