仍然无法将变量从烧瓶分配给 vue.js

Posted

技术标签:

【中文标题】仍然无法将变量从烧瓶分配给 vue.js【英文标题】:Still cannot assign a variable from flask to vue.js 【发布时间】:2019-12-28 06:45:55 【问题描述】:

基本上我想做的是将变量从烧瓶传递给 vue.js,但似乎没有任何效果。到目前为止,我已经尝试了很多选项并从javascript raises SyntaxError with data rendered in Jinja template 提出了建议,但我的问题仍然存在。正是我想要做的是当从烧瓶传递参数 d_var 时,我希望它使用 vue.js 显示在 html(title_variable) 上。

VUE.JS 代码

var app = new Vue(
el: "#app",
delimiters : ['[[', ']]'],
data: 
    message: "Hello vue! (a dynamic thing)",
    title_variable = d_var,
    indication true,
    j: "You should work harder"

HTML

<div id="app">
<p>
   message 
</p>
<p>
<span v-bind:title="title_variable">
  Show me some text...
</span>
</p>
</div>

烧瓶

from flask import Flask, Response, jsonify, request, flash, 
render_template, 
import os
import json

app = Flask(__name__)

@app.route("/")
def home():
    d_var = 'ahahahah'
    return render_template("index.html", title_variable=d_var)


if __name__=="__main__": 
    app.secret_key=os.urandom(12)
    app.run(debug=True,host='0.0.0.0',port=5000)

【问题讨论】:

【参考方案1】:

这里有几个问题...

    您已将 Vue 分隔符设置为使用 [[...]],因此您应该使用

    [[ message ]]
    

    在你的 Vue 模板中

    Flask 将 d_vartitle_variable 的形式传递给 index.html,因此您应该在 ... 中使用它,而不是 d_var

    您的 JavaScript data 对象无效。您不应该使用= 来分配属性值。试试这个

    var app = new Vue(
      el: "#app",
      delimiters : ['[[', ']]'],
      data: 
        message: "Hello vue! (a dynamic thing)",
        title_variable:  title_variable|tojson ,
        indication: true,
        j: "You should work harder"
      
    )
    

    有关tojson()过滤器的信息,请参见此处~https://flask.palletsprojects.com/en/1.1.x/templating/#standard-filters

【讨论】:

你知道为什么我在从flask传递值列表时无法从vue.js中的列表中输出项目吗? 不是没有看到代码。您可能应该创建一个新问题 @newnick988888 还有一件事,最好只使用一个模板引擎,在这种情况下,您使用 Vue 进行渲染,因此您不再需要烧瓶中的 jinja,请参阅完整的 CRUD @ 987654322@.

以上是关于仍然无法将变量从烧瓶分配给 vue.js的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Vue.js 2 组件值分配给主实例变量?

axios GET 请求有效,但无法将结果内容分配给变量

搜索和过滤功能仍然无法正常工作(Vue JS)

将变量传递给按钮 vue js laravel

无法将 128 分配给字节,为啥它会出错而不是溢出?

无法在 Vue.js 中设置未定义的属性“产品”[重复]