我有一个Vuex实例,其中包含两个变量:
const store = new Vuex.Store({
state: {
start_date: moment().startOf('year').format("MM/DD/YYYY"),
end_date: moment().format("MM/DD/YYYY")
},
mutations: {
changeDate(state, date_obj) {
state.start_date = date_obj.start_date
state.end_date = date_obj.end_date
}
}
})
我有我的主Vue实例,其中日期属性是从store
继承的:
var employees = new Vue({
el: '#employees',
computed: {
start_date() {
return store.state.start_date
},
end_date() {
return store.state.end_date
},
leads() {
let filter_obj = {
start_date: this.start_date,
end_date: this.end_date
}
return this.fetch('potential_clients', filter_obj)
}
},
methods: {
fetch(model, args=null) {
return new Promise((resolve, reject) => {
console.log(resolve, reject)
let url = "/" + model + ".json"
console.log(url);
$.ajax({
url: url,
data: args,
success: ((res) => {
console.log(res)
this[model] = res;
resolve(res)
}),
error: ((res) => {
reject(res)
}),
complete: (() => {})
})
})
}
},
mounted() {
this.fetch('potential_clients')
}
});
我最初称之为。fetch('potential_clients')
不带任何额外参数,但是一旦start_date
和end_date
的值更改,我想调用上面的leads()
之类的函数。但是,当我更改开始日期
和结束日期
的值时,没有任何变化。
可能值得注意的是,当我使用Vue插件在Chrome中进行检查,并单击根组件时,视图中会突然显示更改?很奇怪
对Vue实例范围之外的变量的任何引用都不会是被动的。这意味着您正在引用的存储
对象不是被动的。
您需要引用Vue实例对store的内部引用(this.$store
),它是反应性的:
start_date() {
return this.$store.state.start_date
},
这是假设您已在根Vue实例的配置对象中传递了存储
(在您的示例中,它似乎是#employees
组件):
var employees = new Vue({
el: '#employees',
store: store,
...
本文向大家介绍Vue计算属性的使用,包括了Vue计算属性的使用的使用技巧和注意事项,需要的朋友参考一下 我们都知道在Vue构造函数的参数对象中有一个【data】属性,该属性值是一个对象,该对象是对数据的代理,是一个键值对并且时刻与页面表现是一致的,但是这里面只能是简单的键值对,不能拥有业务逻辑,并且由于【data】中的属性属于同一个生命周期,所以如果我们需要某一个属性是依赖于另外一个属性时,在【d
index.html 中通过点击按钮每次 随机更新 post的id属性值。 而post对象被 v-bind 到 子组件home-tag的 props中的id和title属性中。 home-tag子组件中存在计算属性normalizedId 依赖于props的id属性。 因此 理论上每次 点击 post的id的更新会导致normalizedId 的值一起变化。 问题: 实际运行 normalized
问题 你想将一个只读属性定义成一个property,并且只在访问的时候才会计算结果。 但是一旦被访问后,你希望结果值被缓存起来,不用每次都去计算。 解决方案 定义一个延迟属性的一种高效方法是通过使用一个描述器类,如下所示: class lazyproperty: def __init__(self, func): self.func = func def __ge
主要内容:实例 1,实例 2,computed vs methods,实例 3,computed setter,实例 4计算属性关键词: computed。 计算属性在处理一些复杂逻辑时是很有用的。 可以看下以下反转字符串的例子: 实例 1 <div id="app"> {{ message.split('').reverse().join('') }} </div> 实例 1 中模板变的很复杂起来,也不容易看懂理解。 接下来我们看看使用了计算属性的实例: 实例 2 <div id="app">
主要内容:实例 1,实例 2,computed vs methods,实例 3,computed setter,实例 4计算属性关键词: computed。 计算属性在处理一些复杂逻辑时是很有用的。 可以看下以下反转字符串的例子: 实例 1 <div id="app"> {{ message.split('').reverse().join('') }} </div> 实例 1 中模板变的很复杂起来,也不容易看懂理解。 接下来我们看看使用了计算属性的实例: 实例 2 <!DOCTYPE html
模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如: <div id="example"> {{ message.split('').reverse().join('') }} </div> 所以,对于任何复杂逻辑,你都应当使用计算属性。在这个地方,模板不再是简单的声明式逻辑。你必须看一段时间才能意识到,这里是想要显示变量messa