当前位置: 首页 > 知识库问答 >
问题:

修改对象时不触发Vue.js监视

叶华皓
2023-03-14

在Vue.js中,我有三个模板,它们应该一起工作以触发加载新结果。我的容器模板是一个包含过滤器和结果模板的通用模板。当过滤器模板中的对象发生更改时,我很难在结果模板中触发更改。流程非常简单。以下是我目前的情况以及流程的工作原理:

筛选模板:单击后,我的对象属性将更新为新值,并将此更改发送到容器模板。

<span v-on:click='setClient(client.ccid)'>{{client.name}}</span>
data: function() {
    return {
        formData: {
            perPage: 15,
            clientId: null
        }
    }
}

setClient: function(clientId){
  this.formData.clientId = clientId;
  this.$emit('filters-update', this.formData);
}

容器模板:-此角色仅用于保存筛选器和结果模板,并将修改后的对象传递给结果模板。

<template>
   <div class="row">
     <filters v-on:filters-update="filtersUpdate"></filters>
     <results :filters='filters'></results>
   </div>
</template>

<script>
export default {
    data: function() {
       return  {
          filters: {}
       }
    },

    methods: {
        filtersUpdate: function(params){
            this.filters = params;
        }
    }
}
</script>

结果模板:

export default {
  props: {
    filters: {
        type: Object
    },
  }
}

watch: {
  filters: function(){
    console.log("loading new results..");
    this.loadData();
  }
}

共有1个答案

江迪
2023-03-14

显然,要监视对象属性的更改,您需要进行深入监视https://vuejs.org/v2/api/#watch

watch: {
    filters: {
        deep: true,
        handler(){
            this.loadData();
        }
    }
}
 类似资料:
  • 问题内容: 我正在尝试监视控制器中服务的更改。我在这里基于stackoverflow的许多qns尝试了各种方法,但是我一直无法使其工作。 的HTML: javascript: 如何使手表在控制器中触发? jsfiddle 问题答案: 尝试通过这种方式写: 演示版 [编辑] 有时,这种方式将不起作用,特别是如果服务已从3d party更新。 为了使其工作,我们必须 帮助 调整点火消化周期。 这是一个

  • 在Java中给定一个LocalDateTime对象。我如何将时间设置为00:00:00?一种方法是创建一个与此日期相同的新对象,并将其设置为0。还有其他方法吗?

  • 问题内容: 我正在研究一个第三方开发人员用来为我们的核心应用程序编写扩展的Python库。 我想知道引发异常时是否可以修改回溯,因此最后一个堆栈帧是对开发人员代码中库函数的调用,而不是对引发异常的库中的行的调用。堆栈底部还有一些框架,其中包含对第一次加载我理想上也希望删除的代码时使用的函数的引用。 在此先感谢您的任何建议! 问题答案: 不更改回溯怎么办?您要求的两件事都可以通过不同的方式轻松完成。

  • vue2 父组件定义了一个对象,通过.sync方法传递给子组件,子组件会改变这个对象的值,然后想watch这个值发现产生变化的时候调用某个回调,发现watch不到。。为什么会watch不到呢?应该通过defineOxxx函数进行了监听?有什么解决方法吗 在子组件也尝试监听,没监听到

  • 问题内容: 我正在尝试遍历: …并提取中的每个元素。这是我的方法: 这里的问题是对的每次调用都会从中删除元素,从而修改其大小,从而导致以下错误: 那么…当元素动态变化时,我该如何遍历其中的元素呢? 问题答案: 其他人则提到了正确的解决方案,而没有实际阐明。所以这里是: 另外,如果您想安全地在assign函数中更改映射,则需要传入迭代器(只能使用remove函数,并且只能使用一次)或条目来更改值。

  • 主要内容:基本语法,删除触发器修改触发器可以通过删除原触发器,再以相同的名称创建新的触发器。 基本语法 与其他 MySQL 数据库对象一样,可以使用 DROP 语句将触发器从数据库中删除。 语法格式如下: DROP TRIGGER [ IF EXISTS ] [数据库名] <触发器名> 语法说明如下: 1) 触发器名 要删除的触发器名称。 2) 数据库名 可选项。指定触发器所在的数据库的名称。若没有指定,则为当前默认的数据库。