Javascript 为什么Vuejs不希望根据通过AJAX接收的数据更新模型

Javascript 为什么Vuejs不希望根据通过AJAX接收的数据更新模型,javascript,ajax,vue.js,vuejs2,Javascript,Ajax,Vue.js,Vuejs2,期望值: 应用程序应该像套接字一样工作,只有通过定期向服务器发送ajax请求才能接收数据 问题: 当更改“客户端(浏览器)1号”上的数据时,很快“客户端2号”上的数据就会更改但是如果您现在更改“客户编号2”上的数据,则“客户编号1”上的更改不会发生 简单地说,数据是不同步的。应用程序不会注意到传入数据中的更改 我不明白原因。 vuetest.php <div id="app"> <table border="1"> <tr v-for="it

期望值:

应用程序应该像套接字一样工作,只有通过定期向服务器发送ajax请求才能接收数据

问题:

当更改“客户端(浏览器)1号”上的数据时,很快“客户端2号”上的数据就会更改但是如果您现在更改“客户编号2”上的数据,则“客户编号1”上的更改不会发生

简单地说,数据是不同步的。应用程序不会注意到传入数据中的更改

我不明白原因。

vuetest.php

<div id="app">
    <table border="1">
        <tr v-for="item in items"> 
            <td>
               <div @click="editCell" 
                    @focusout="saveCell" 
                    @keyup.enter="saveCell" 
                    >{{item.value}}</div> 
            </td>
        </tr>
    </table>
</div>
vueajax.php

<div id="app">
    <table border="1">
        <tr v-for="item in items"> 
            <td>
               <div @click="editCell" 
                    @focusout="saveCell" 
                    @keyup.enter="saveCell" 
                    >{{item.value}}</div> 
            </td>
        </tr>
    </table>
</div>

一般来说,这些问题都是Vue在反应性和阵列方面的问题:

考虑到这一点,您可以尝试:

this.$set(this'items',response.data.items)
而不是
this.items=response.data.items

这将强制Vue使用新项重新绑定该实例变量

同样值得一提的是,你需要在你的循环上有一个键:


-您可能会遇到控制台错误,说明了相同的情况。

我假设您的问题不是数据没有更新,而是没有呈现,在这种情况下,在包含将要更改的数据的元素和处理新数据的函数上放置一个键,然后更改该键,这将强制重新加载。感谢您提出的解决方案。它帮助我解决了这个问题,但发现了一个瓶颈:如果您在方法saveCell:
/$(e.target).html(value)中注释掉这段代码,您的解决方案就会起作用
/$(e.target).text(response.data.result)@Ivan对不起,我没有走那么远,尽管我很高兴你找到了它。值得注意的是:不要这样做:)对元素使用计算属性和动态类,而不是直接操作DOM。这将打破Vues对元素的控制。感谢您的评论。现在,我在Vuejs方面失败的原因变得更加清楚了。