Change:

<div id="vue">

To:

<div v-cloak id="vue">

and add the following CSS rule:

[v-cloak] {
  display: none;
}

That will cause the div to remain hidden until after the Vue instance has 
finished compiling.

Anthony

On Monday, June 26, 2017 at 12:10:35 AM UTC-4, Ben Lawrence wrote:
>
> This thread might be a little old but here is a way where you do not have 
> to change web2py's delimiters, instead change Vue's delimiters. Problem is, 
> with V2, you got to put all the scripts up front or you will see the 
> strange delimiters as the page is loading. Here is main.html from that 
> scaffolding app using Vue V2
> {{extend 'layout.html'}}
> <div id="vue">
>   <div class="container max900">
>     <div class="fill">
>       <div class="padded">
>         <input v-model="keywords" placeholder="type some common words like 
> 'good' or 'one'"/>
>       </div>
>     </div>
>     ${ answer }
>     <div class="fill">
>       <div class="padded" v-for="doc in docs">
>         <div class="lifted padded">
>           <h5>${doc.title}</h5>
>           <p>${doc.body}</p>
>         </div>
>       </div>
>     </div>
>   </div>
> </div>
>
> {{block bottomjs}}
> <script>{{=ASSIGNJS(BASE='/'+request.application+'/')}}</script>
> <script src="https://unpkg.com/vue";></script>
> <script src="https://unpkg.com/lodash@4.13.1/lodash.min.js";></script>
> <script>
>
> docsGET = function(url, data) {
>     return jQuery.getJSON(url, data).fail(self.on_error);
> };
>
> var mainVM = new Vue({
>   el: '#vue',
>   delimiters: ['${', '}'],
>   data: {
>     answer: 'Results',
>     page: '',        /* page name */
>     state: {},      /* global page state */
>     keywords: '',   /* example: search field */
>     docs: []        /* example search response */
>   },
>   watch: {
>     // whenever keywords change, this function will run
>     keywords: function (newKeywords) {
>       this.answer = 'Waiting ...'
>       this.getAnswer()
>     }
>   },
>   methods: {
>     // _.debounce is a function provided by lodash to limit how
>     // often a particularly expensive operation can be run.
>     // In this case, we want to limit how often we access
>     // the search, waiting until the user has completely
>     // finished typing before making the ajax request. To learn
>     // more about the _.debounce function (and its cousin
>     // _.throttle), visit: https://lodash.com/docs#debounce
>     getAnswer: _.debounce(
>       function () {
>         if (this.keywords.length < 3) {
>           this.answer = 'Type more characters...'
>           return
>         }
>         this.answer = 'Thinking...'
>         var vm = this
>         docsGET(BASE+'default/search',{q: 
> vm.keywords}).done(function(docs){vm.docs=docs; vm.answer = "Results:"});
>       },
>       // This is the number of milliseconds we wait for the
>       // user to stop typing.
>       500
>     )
>   }
> })
> </script>
> {{end}}
>
>
> On Sunday, February 26, 2017 at 1:54:24 AM UTC-8, St. Pirsch wrote:
>>
>> Hi John,
>> Thanks! it works! Strange though that the untouched scaffolding app seems 
>> to work for some people and for others not.
>> Best,
>> Stephan
>>
>> Am Dienstag, 31. Januar 2017 17:50:14 UTC+1 schrieb John Philip:
>>>
>>> Hi Stephan,
>>>
>>> I tried the brutal approach. I changed the delimiters for web2py on the 
>>> model and changed all of the views accordingly. I left the delimiters for 
>>> vuejs as default ('{{' '}}')
>>>
>>> regards,
>>>
>>> John
>>>
>>> On Monday, January 30, 2017 at 10:24:25 AM UTC+1, St. Pirsch wrote:
>>>>
>>>> Hello John,
>>>> Would you mind sharing your solution? 
>>>> Thx,
>>>> Stephan
>>>
>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to