On Wednesday, August 22, 2012 at 6:34 AM, Steve Sanderson wrote:
> This is fantastic - thanks for pushing this forwards, Rafael!
>
> For context, I'm part of the knockout.js (a JavaScript MV* library) team, so
> I have some interest in how this could work out. This spec has a lot of
> potential to make MVC-style coding far simpler and more robust, both for
> framework developers and web app developers. Although the semantics of the
> Object.observe proposal are different in a few ways from what Knockout and
> similar frameworks use for observability, it certainly looks applicable
> enough to the same design patterns and APIs.
>
> There's one significant extra aspect of observability that Knockout, Batman,
> CanJS, and other MVC-type frameworks rely on that isn't covered as far as I
> can tell by the proposal so far. These frameworks can automatically determine
> the dependencies of an arbitrary block of code. For example, if there is a
> block of code that determines the output of a computed property, like this:
>
> function fullName() { return firstName + " " + lastName };
>
> ... then if you use such a function during a declarative binding, those
> frameworks' observability mechanisms will automatically know which underlying
> observable properties it depends on. This is possible because the frameworks'
> observabilty mechanisms can notify on read as well as on write.
Couldn't this be accomplished via get accessor and firing a notification from
within the accessor function when properties are read?
> This ends up being a very powerful and flexible feature whereby the framework
> can manage arbitrary and dynamically-changing dependency chains, and the
> developer can robustly call arbitrary custom functions in computed property
> evaluators and bindings.
>
> These facilities could be made possible in the Object.observe proposal by
> adding one further primitive feature. Just as you can register for
> notifications on *write*, you'd ideally also be able to register for separate
> notifications on *read*. Typically only framework code would do that -
> application code wouldn't usually need to. The actual dependency detection
> logic would differ depending on whether read notifications were delivered
> synchronously or asynchronously, but then everything else can be built on top
> of that primitive.
>
> Please let me know if you want more detailed descriptions of how any of this
> works in Knockout/etc. I'd be happy to suggest how a comparable API might
> look in the Object.observe world!
>
> Regards
> Steve
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
>
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss