Ift*_*lam 8 javascript vue.js vuejs2
我正在使用vuejs最新版本做一个项目.在这个项目中,我希望获得关于点击事件的关联vue的html5属性.
我的按钮代码是
<a href="javascript:" class="btn btn-info btn-xs" @click="editModal"
data_id="{{$staff->id}}">
<i class="fa fa-pencil"></i>
</a>
Run Code Online (Sandbox Code Playgroud)
我的js是
var staffModal = new Vue({
el: '#app',
methods: {
editModal: function(){
console.log(this.data_id);
}
}});
Run Code Online (Sandbox Code Playgroud)
在我的控制台中,我得到了不确定.如何获得正确的价值.
ndp*_*dpu 17
MouseEvent实例作为第一个参数传递给click事件处理程序.使用getAttribute函数访问属性.MouseEvent.target将指向<i>和MouseEvent.currentTarget到<a>(元素事件监听器被附接到).将editModal方法更改为:
editModal: function(e) {
console.log(e.currentTarget.getAttribute('data_id'));
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句:使用 - (破折号)而不是_(下划线)来创建数据属性:正确data-id不是data_id
小智 8
您的代码中存在一些问题.让我们从HTML代码开始.
需要插入属性时,必须使用v-bind.所以你有两种方法可以做到这一点.使用v-bind:attribute="expression"或简写:attribute="expression".使用attribute="{{ expression }}"肯定不会起作用.
另一个重要的事情是,要使用自定义属性名称,您应该使用data-custom-attribute-name而不是data_custom-attribute-name.
<div id="app">
<a
href="javascript:"
class="btn btn-info btn-xs"
@click="editModal"
:data-id="staff.id"
:data-my-amazing-custom-attribute="staff.name">
Click me!
</a>
</div>
Run Code Online (Sandbox Code Playgroud)
现在,我们去JS吧.从你的问题我不知道$ staff变量来自哪里,所以我做了一个改编来演示.
new Vue({
el: '#app',
methods: {
editModal: function(event){
// Here you will be able to see all the
// custom attributes in camelCase
console.log(event.target.dataset);
console.log('ID:', event.target.dataset.id);
console.log('Name:', event.target.dataset.myAmazingCustomAttribute);
}
},
data () {
return {
staff: {
id: 'some id',
name: 'Name of my amazing custom attribute'
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
你可以在这里查看一个工作版本:https://jsfiddle.net/6v3wyoh6/
希望能帮助到你!
获取id从数据属性是罚款,而且会工作,但我的问题是,为什么呢?您正在使用 Vue,因此请使用 Vue。您可以id 直接通过.
<a class="btn btn-info btn-xs" @click="editModal({{$staff->id}})">
<i class="fa fa-pencil"></i>
</a>
Run Code Online (Sandbox Code Playgroud)
你的 Vue 代码变成了
methods: {
editModal: function(id){
console.log(id);
}
}
Run Code Online (Sandbox Code Playgroud)
现在您无需担心弄清楚数据属性是什么。这是使用 Vue 时通常应该避免的 DOM 操作,因为它是不必要的。
注意:我在这里假设您使用的是 laravel 或类似的东西,以便在{{$staff->id}}呈现时将其呈现为您的id.
| 归档时间: |
|
| 查看次数: |
9117 次 |
| 最近记录: |