【问题标题】:How to pass selected id to modal in Vue.js?如何将选定的 id 传递给 Vue.js 中的模态?
【发布时间】:2019-11-20 20:57:23
【问题描述】:

我正在尝试使用弹出警报删除用户。我有用户列表。当我单击删除按钮时,我想通过方法将 id 传递给模态,然后将该 id 传递给在模态中调用按钮的方法。我收到错误属性或方法“id”未在实例上定义,但在渲染期间引用。如何获取点击用户的 id?

表格

<tr v-for="users in pending_users.data" :key="users.id">
   <td>{{users.name}}</td>
   <td>{{users.email}}</td>
   <td>{{users.mobile_no}}</td>
   <td><button class="btn btn-danger btn-sm" @click="showModal(users.id)">Delete</button></td>
</tr>
</tbody>

模态

       <div class="modal fade" id="userDeleteModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
             aria-hidden="true">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="exampleModalLabel">Delete or Decline user</h5>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body">
                        Do you want to delete this user?
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">No</button>
                        <button type="button" class="btn btn-success" @click="deleteUser(id)">Yes</button>
                    </div>
                </div>
            </div>
        </div>

方法

<script>
     export default {
        data() {
            return {

           }
        },
        methods: {
            showModal(id) {
                $('#userDeleteModal').modal('show');
            },
            deleteUser(id) {
              axios.post('api/deleteUser', null,
             {
                params: {
                    'user_id': id,
                        }
             })
             .then(({data}) => {

                    });

            },

        },

</script>

【问题讨论】:

    标签: javascript vue.js vuejs2


    【解决方案1】:

    你传递的 id,所以你只需要在某个模型上定义它,这样 deleteUser 就可以把它捡起来

    export default {
       data() {
           return {
               editing_user_id: 0,
               //..
           }
       },
       methods:{
           showModal(id) {
                this.editing_user_id = id;
                $('#userDeleteModal').modal('show');
            },
            deleteUser() { 
              axios.post('api/deleteUser', null, {
                params: {
                    'user_id': this.editing_user_id,
    
            //..
       }
    

    IMO 只需传递整个项目/用户,即 showModal(user),然后将 editing_user_id 更改为 editing_user,您几乎总是想要的不仅仅是 id。

    瞄准axios.delete('api/user/' + editing_user.id, ... 更有意义。

    【讨论】:

    • 谢谢,现在我可以删除点击的项目,但我在控制台上遇到同样的错误属性或方法“id”未在实例上定义,但在渲染期间引用。为什么会来?
    • 在您的模态 id="userDeleteModal" 上,您在 deleteUser 上使用 id,但它没有定义,向该按钮添加一个 v-if="id",如上所示,如果您只使用 deleteUser 而没有传递 id,它会工作的。
    猜你喜欢
    • 1970-01-01
    • 2016-03-08
    • 2019-04-03
    • 2012-08-10
    • 2014-09-17
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    相关资源
    最近更新 更多