前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决django 和 vue 渲染冲突问题 event

解决django 和 vue 渲染冲突问题 event

作者头像
kirin
发布2020-11-03 14:37:14
8770
发布2020-11-03 14:37:14
举报
文章被收录于专栏:Kirin博客
代码语言:javascript
复制
今天解决了django 和vue 同时渲染冲突的问题,
需求是这样的,后端取回对象列表由django模板渲染,取回后的列表大概是这样的
代码语言:javascript
复制
1    2    3     4
2    2    3     4
3    2    3     4
4    2    3     4
.    .    .     .

每一行渲染的东西都是不同的数据)
其中我遇到的难题就是 因为我是用django + vue 混合渲染
所以他们两的渲染标签对天生就是冲突的,vue也没法直接访问django渲染列表对象里的值,所以就有了这个问题
简单来说就是 我用django渲染的列表   需要用vue 去捕捉我当前点击的对象是什么,需要拿到切确的对象值,然后
做下一步处理,
起初的处理方案我是想直接用引擎模板通过参数传递的方式传入到vue的方法中
结果是 vue 没法直接捕获到django模板传入的参数,显示为 object undefined
它们长这样   @click='get_value({{value}})'  value 是django渲染的值

这是我用的方法,思考了一阵子后发现这个方法并不可行,所以用了第二种方法

那就是在 4row 中加入了一个a标签,a标签用data的方式绑定django模板渲染出来的结果,它们长这样

{% for value in items %}
<a data-d1="{{value.d1}}" data-d2="{{value.d2}}">data用event事件捕捉当前点击获取</a>

{% endfor %}
大概就是这样子的
通过data自定义属性为a标签绑定上不好获取的值,每一次循环都是不同的值,我们通过event来判断点击的是哪次循环
然后在通过event事件里面的srcElement.dataset  获取到绑定的值即可

下面是js实现过程

ref_test($event){

// 通过event 事件获取当前元素的data中绑定的值

var n1=$event.srcElement.dataset.d1

var n2=$event.srcElement.dataset.d2

var n3=$event.srcElement.dataset.d3

// var n4=$event.srcElement.dataset.d4 // 需要获取上一个input里面的值 ,这个方法行不通了

var n4=$event.currentTarget.previousElementSibling.value // 需要获取input里面的值

currentTarget.previousElementSibling 的意思表示为获取当前标签的上一个标签

var n5=$event.srcElement.dataset.d5

}

代码语言:javascript
复制
这样就解决了django 和vue同时渲染冲突问题,

下面为参考代码

<p @click = “clickfun($event)”>点击</p>
解决django 和 vue 渲染冲突问题 event-麒麟博客
解决django 和 vue 渲染冲突问题 event-麒麟博客
代码语言:javascript
复制
methods: {
clickfun(e) {
// e.target 是你当前点击的元素
// e.currentTarget 是你绑定事件的元素
    #获得点击元素的前一个元素
    e.currentTarget.previousElementSibling.innerHTML
    #获得点击元素的第一个子元素
    e.currentTarget.firstElementChild
    # 获得点击元素的下一个元素
    e.currentTarget.nextElementSibling
    # 获得点击元素中id为string的元素
    e.currentTarget.getElementById("string")
    # 获得点击元素的string属性
    e.currentTarget.getAttributeNode('string')
    # 获得点击元素的父级元素
    e.currentTarget.parentElement
    # 获得点击元素的前一个元素的第一个子元素的HTML值
    e.currentTarget.previousElementSibling.firstElementChild.innerHTML
  
    }
        },
解决django 和 vue 渲染冲突问题 event-麒麟博客
解决django 和 vue 渲染冲突问题 event-麒麟博客
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档