vue.js的index.html中如何向app传递更多参数?

vue.js build之后是在django下面运行的,首页用一个django view渲染,通过context给它传递了参数,到了index.html中拿到参数后,怎样进一步传递到app里面?

class IndexPageView(TemplateView):
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['now'] = timezone.now()
        return context

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/', include('api.urls')),
    url(r'^$', IndexPageView.as_view(template_name="index.html")),
]
<body>
  <div style="display: none;">
    context from django: {% templatetag now %}
  </div>
  <div id="app"></div>
  <!-- built files will be auto injected -->
</body>
阅读 3k
2 个回答

最简单粗暴的方法:

<script>
  window.vars = {% 输出一个 json 在这里 %}
</script>

你知道 json 语法是 js 的子集,所以这样不会有语法错误,window.vars 直接就是一个对象了。

希望对你有帮助

官方论坛里帮你找了个回答:

HTML:

<div id="my-target-element" data-var-name="var-value"></div>

JS:

new Vue({
    el: '#my-target-element',
    template: '<div>Just an example with {{varName}}</div>',
    data: {varName: null},
    beforeMount: function () {
        this.varName = this.$el.attributes['data-var-name'].value;
    },
});

原解答点这里

推荐问题