Vue.js 如何从手表调用函数?

Vue.js 如何从手表调用函数?,vue.js,Vue.js,生成错误:ReferenceError:foo未定义 我还看了一些例子: 这根绳子是干什么的 handler:function(val,oldVal){/*…*/}, handler它是关键字吗?或者它可以是函数 如果您想使用watch观察您的属性,可以使用this.foo调用您的方法: data: function () { return { questions: [] } }, watch: { questions : function(val, o

生成错误:
ReferenceError:foo未定义

我还看了一些例子:

这根绳子是干什么的

handler:function(val,oldVal){/*…*/},

handler
它是关键字吗?或者它可以是函数

如果您想使用watch观察您的属性,可以使用
this.foo调用您的方法:

data: function ()  {
    return {
       questions: []
    }
},

watch: {
    questions : function(val, oldVal) {
        foo()
    }
},      

methods: {
    foo() {
        console.log("foo called");
    }
}
回答有关
处理程序的问题:它是一个关键字属性,可以采用函数表达式(如示例中所示)或函数引用,例如:

data: function ()  {
    return {
       questions: []
    }
},

watch: {
    questions: {
        handler: function(val, oldVal) {
            this.foo(); // call it in the context of your component object
        },
        deep: true
    }
},      

methods: {
    foo() {
        console.log("foo called");
    }
}

出于好奇:你是否需要观察一处房产,以便在它每次发生变化时都能做些什么,或者也能解决你的问题?

只需添加@nils的答案即可

function myHandler() { ... } // Defined somewhere outside of the vue component object

...

handler: myHandler,

...
如果函数foo在方法中,也可以使用

略短于

handler: 'foo'

我是否正确理解每次数据更改
foo
都会调用?我需要检查我的数据,以更改每个用户点击复选框。那么
手表对我来说够了吗?现在我用
v-model=“firstLevelAnswer.isSelected”
更改
question
结构的值。现在,当我点击复选框时,在控制台上看不到任何变化。我希望每次
数据发生变化时都会调用foo。什么是
firstLevelAnswer
?使用您的代码,您只需关注
问题的更改。
watch
对象中的键的名称是您将要查看的属性。以下是我的问题:这里是我项目的主要部分:在这种情况下,您可能更容易在dom:vuejs.org/guide/events.htmlNothing中收听有关您的问题的
输入事件。它只是需要更多的努力,让手表做你想做的事情(也是性能方面的)。非常干净。注意:当对Vuex状态变量使用此方法时,例如
'$store.state.questions':'foo'
传递(value,oldValue)参数,因此foo()变为
foo(value,oldValue){}
handler() {
    this.foo()
}