Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除Vue.js中的元素?_Javascript_Jquery_Ajax_Vue.js_Vue Resource - Fatal编程技术网

Javascript 如何删除Vue.js中的元素?

Javascript 如何删除Vue.js中的元素?,javascript,jquery,ajax,vue.js,vue-resource,Javascript,Jquery,Ajax,Vue.js,Vue Resource,我是Vue的新手。我无法在Vue.js Javascript文件中从DOM中删除项目。 我成功地发出了一个ajax post请求,它从我的数据库中删除了一条特定的记录 一旦它被删除,我需要将它从DOM中删除,这样它就不需要重新加载同一个页面就无法正常工作-我想你知道我的意思 我可以在jQuery中实现,但我想知道在Vue.js中应该如何实现 以下是我的代码部分: // SOME CODE BEFORE ... onSubmit: function(e){ e.preventDefaul

我是Vue的新手。我无法在Vue.js Javascript文件中从DOM中删除项目。 我成功地发出了一个ajax post请求,它从我的数据库中删除了一条特定的记录

一旦它被删除,我需要将它从DOM中删除,这样它就不需要重新加载同一个页面就无法正常工作-我想你知道我的意思

我可以在jQuery中实现,但我想知道在Vue.js中应该如何实现

以下是我的代码部分:

// SOME CODE BEFORE ...

onSubmit: function(e){
    e.preventDefault();

    $tablerow = this.el.parentNode.parentNode;

    // Assign a correct submit request type and url
    this.vm
        .$http[this.getRequestType()](this.el.action)
        .then(this.onComplete.bind(this))
        .catch(this.onError.bind(this))
    ;
},

onComplete: function(){

    // Remove the item from a DOM  <<< I NEED TO REMOVE PARENT <tr/> ELEMENT
    $(this.el).closest('tr').fadeOut(300, function(){
        this.remove();
    });

    // If complete message exists, use it as a feedback
    if(this.params.complete){
        alert(this.params.complete);
    }
},

// SOME CODE AFTER ...
//之前的一些代码。。。
提交人:函数(e){
e、 预防默认值();
$tablerow=this.el.parentNode.parentNode;
//分配正确的提交请求类型和url
这个是.vm
.$http[this.getRequestType()](this.el.action)
.then(this.onComplete.bind(this))
.catch(这个.onError.bind(这个))
;
},
onComplete:function(){

//从DOM中删除项通常情况下,您将在存储在数组中的表行中显示一个用v-for显示的项列表。在ajax调用后,您可以使用此.items.$Remove(item)删除此项,它将自动从DOM中显示的位置删除

由于您没有显示模板,我将尝试重新创建一个类似的场景,我认为您正在尝试这样做

data: function(){
   return {
       items: ['item1','item2','item3']
   }
},

methods: {
    remove: function(item){
        ajaxCall.then(function(){
            this.items.$remove(item);//will remove the <tr> from the DOM 
        });
    }
}
data:function(){
返回{
项目:['item1'、'item2'、'item3']
}
},
方法:{
删除:功能(项目){
然后(函数(){
this.items.$remove(item);//将从DOM中删除
});
}
}
您的模板可以是

<tbody>
  <tr v-for="item in items" v-on:click="remove(item)">{{ item }}</tr>
</tbody>

{{item}}

您已经在使用jQuery了,为什么不继续使用它呢?Vue.js从技术上讲是一个Javascript文件,因此您当前使用的
.remove()
是Javascript容量。但是,如果您要使用
$(this)。remove()
将使用
.remove()
在函数的jQuery意义上。另外,应该注意的是,jQuery也是围绕JavascriptYeah构建的,但正如我所提到的,我想知道如何在Vue.js中实现它。为了性能,Vue和jQuery之间有什么更好的地方?很抱歉之前没有提及,但我以前就是这样做的。因此,据我所知,没有w如果
数据
中未声明
项数组
,可以在Vue中执行此操作,对吗?您应该使用自定义指令进行此调用并删除自身(DOM元素)在ajax调用之后,
v-for
指令在这里发挥了神奇的作用。这些
元素的显示取决于数据中的
项目。因此,如果删除项目,则意味着删除
tr
元素。如果使用相同的
$remove
vue方法,则只会从数据中删除元素,但是
v-for
指令的绑定将其与
tr
元素同步