A few comments/suggestions
1) instead of
response.headers['web2py-component-command']="$
('#show_assoc_contact').click(function(event){...);"
you can do
response.js="jQuery('#show_assoc_contact').click(function(event)
{...);"
Use jQuery instead of '$' since '$" may conflict with non-jquery js
libraries.
2) You can include a js in a component
def oppty_contacts():
response.files.append(....)
...
and you have not problems with markmin pages.
BUT you will no be able to do
{{=plugin_wiki.widget('oppty_contacts',...)}}
because the response.files.append will be executed after the header is
serialized anyway, if you are using the {{....}} syntax that you are
probably using normal web2py controllers actions and views. In this
case you can do
in function:
mycomponent=plugin_wiki.widget('oppty_contacts',...)
in view:
{{=mycomponent}}
Hope this makes sense.
On Aug 13, 6:54 am, Miguel Lopes <[email protected]> wrote:
> In order to include scripting in a very dynamic component I'm appending a js
> file to the response files of every template that uses the component, such
> as:
>
> {{response.files.append(URL(request.application,'static/base_components','view_oppty.js'))}}
> {{extend 'layout.html'}}
>
> However, this has the problem of decoupling the scripting from the
> component. Although, I find the advantage of leaving the js in its own file
> which is convenient for editing and maintenance.
> My reading of the web2py Book chapter 13 suggests that the answer would be
> to minify the js code and include it in the controller, such as:
>
> def oppty_contacts():
> define var to be used on the template
> ...
>
> response.headers['web2py-component-command']="$('#show_assoc_contact').click(function(event){...);"
> form=...
> return dict(..., form=form)
>
> However I can't get this is to work.
>
> My doubts are:
> I wonder if there is a way to couple a scripting file with the component (so
> I can enjoy the advantage of having the js in its own file)?
> What am I doing wrong in the alternative solution of including the js code
> via response.headers?
>
> Miguel