代码之家  ›  专栏  ›  技术社区  ›  Aniket G

同时使用烧瓶时,在Vue.js中使用花括号表示值

  •  1
  • Aniket G  · 技术社区  · 6 年前

    <html>
    
    <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    
        <!-- Bootstrap CSS -->
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
            crossorigin="anonymous">
    </head>
    
    <body>
        <div id="app" class="container">
            <div class="row">
                <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
                    <div class="collapse navbar-collapse" id="navbarNav">
                        <ul class="navbar-nav">
                            <li class="nav-item" v-for="tab in tabs" v-bind:class="tab.active">
                                <a href="#" class="nav-link">{{ tab.name }}</a>
                            </li>
                        </ul>
                    </div>
                </nav>
            </div>
            <div class="row">
                <div class="col">
                    <hr class="navbarDivide">
                </div>
            </div>
        </div>
    
        <!-- Optional JavaScript -->
        <!-- jQuery first, then Popper.js, then Bootstrap JS -->
        <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
            crossorigin="anonymous"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
            crossorigin="anonymous"></script>
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
            crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <script src="{{ url_for('static', filename='js/challenges.js') }}"></script>
    </body>
    
    </html>
    

    当我移除 {{ tab.name }} ,它工作得很好。如果我加上 tab.name 进入 v-bind:class="tab.name" ,它会在网站中显示正确的tab.name。这些都证明了vue.js是有效的,一切都应该正常工作。通过调试,我发现问题出在 {{tab.name} (不是tab.name,而是它外面的括号)。解决这个问题的办法是什么?

    我的javascript如下:

    var app = new Vue({
        el: '#app',
        data: {
            tabs: [
                { name: "Home", active: "" },
                { name: "Challenges", active: "active" },
                { name: "Scoreboard", active: "" },
                { name: "About", active: "" }
            ],
            challenges: finalChallenges
        }
    });
    

    编辑: 我刚刚意识到为什么它可能不起作用。 {{ something }} 是一个烧瓶,它覆盖了vue.js。有解决办法吗?

    1 回复  |  直到 6 年前
        1
  •  6
  •   Minh Tri Le    6 年前

    Flask使用jinja作为模板语言,该语言也使用{{variable}}

    因此,当Flask呈现模板时,{tab.name}}变成空字符串,因为tab.name在当前呈现中不是上下文变量。

    {{ '{{ tab.name }}' }}
    
        2
  •  1
  •   Suat Atan PhD    3 年前

    而不是像明·特里尔的回答那样写冗长的表达。还有另一种方法:您可以像这样更改Vue.js模板分隔符 answer

    var app = new Vue({
     el: '#app',
     data: {
     message: 'Hello Vue!'
     },
     delimiters: ['[[',']]']
    })
    

    然后像这样使用:

     <div id="app">
         {{This is Jinja template declaration}}
         <!--Next is Vue.js declaration-->
         [[ message ]] 
        </div>