On 5. 2. 2015, at 22:38, Samuel Pelletier <[email protected]> wrote: > The simple fact you care is a bad smell (from Clean Code). By definition, a > component should not care about it's parent or childrens, it break the > encapsulation principle and component are supposed to manage views only. The > only communication between them is via the bindings which are like the public > interface of the component.
On 5. 2. 2015, at 23:01, Robert B. Hanviriyapunt <[email protected]> wrote: > I can’t imagine what “something reasonable” would be that would need to fire > in a subcomponent before the start of the appendToResponse (assuming that the > component structure is a new structure and not the same as the one that might > have previously fired takeValuesFromRequest). So as to get an immediate response without a need to reload, my standard html header contains a javascript, which in some pre-defined intervals polls the server and if server says so, the script changes a couple of values in the page (marked by appropriate spans). The trick is that some „plugins“, i.e., components pretty deep in the hierarchy and inside of lots of <wo:ifs>, might sometimes need to change the poll interval. If the components happen not to be used at all, the script runs with the default interval. My original attempt looked conceptually (leaving out boring details) like this: === code === class MyRootPage extends ERXComponent { int autoRefreshRequestDelay void awake { int autoRefreshRequestDelay=ERXProperties.intForKey('DefaultAutoRefreshRequestDelay') } ... } class MyPlugin extends ERXComponent { void awake { MyRootPage root=this while (root.parent()) root=root.parent() root.autoRefreshRequestDelay=ERXProperties.intForKey('SpecialPluginAutoRefreshRequestDelay') } ... } === MainPage.html === ... the script here ... var refreshDelay=(<wo:str value="$autoRefreshRequestDelay"/>) ... other HTML ... === My idea was that all awakes go first, thus the proper delay would be set automatically, based on whether the plugin happens to be in the page or not. Then, appendToResponse-time, when the page gets rendered, the JS would get the proper value. Self-evidently couldn't work given the JS gets actually rendered before most subcomponents (including the plugins) are awaken. To solve the problem, I simply moved the JavaScript to the very end of the MainPage :) For some reason originally I lived under a misconception that all javascripts must be at the page header; of course they need not, hell knows where I got that dumb idea from. Well I don't know; perhaps there's a much better and cleaner solution which I simply don't see? Thanks and all the best, OC _______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [email protected]
