这可以在Vue.Js中传递计算属性中的参数 . 我可以看到当getter / setter使用computed时,他们可以获取一个参数并将其分配给变量 . 喜欢这里documentation:
// ...
computed: {
fullName: {
// getter
get: function () {
return this.firstName + ' ' + this.lastName
},
// setter
set: function (newValue) {
var names = newValue.split(' ')
this.firstName = names[0]
this.lastName = names[names.length - 1]
}
}
}
// ...
这也是可能的:
// ...
computed: {
fullName: function (salut) {
return salut + ' ' + this.firstName + ' ' + this.lastName
}
}
// ...
其中computed属性接受一个参数并返回所需的输出 . 但是,当我尝试这个时,我收到此错误:
vue.common.js:2250未捕获TypeError:fullName不是函数(...)
我应该使用这种方法的方法吗?
7 回答
是的方法是使用参数 . 与上述答案一样,在您的示例中,最好使用方法,因为执行非常轻 .
仅供参考,在方法复杂且成本高的情况下,您可以缓存结果,如下所示:
注意:使用此功能时,如果处理数千个,请注意内存
最有可能你想使用一种方法:
更长的解释
从技术上讲,您可以使用带有如下参数的计算属性:
(感谢
Unirgy
获取此基本代码 . )计算属性和方法之间的区别在于 computed properties are cached 并且仅在其依赖关系发生更改时才会更改 . A method will evaluate every time its called . 使用这种方法比计算属性这样的情况没有任何好处 . 您可以在Vue文档中了解更多相关信息https://vuejs.org/v2/guide/computed.html#Computed-Caching-vs-Methods
这种情况略有 different when use Vuex . Vuex中的AFAIK是从商店同步获取参数化结果的唯一方法(操作是异步的) . 因此,这种方法被官方Vuex文档列为其吸气剂https://vuex.vuejs.org/guide/getters.html#method-style-access
您可以使用方法,但我更喜欢使用计算属性而不是方法,如果它们不是变异数据或没有外部效果 .
您可以通过这种方式将参数传递给计算属性(未记录,但维护者建议,不记得在哪里):
编辑:请不要使用此解决方案,它只会使代码复杂化而没有任何好处 .
好吧,从技术上讲,我们可以将参数传递给计算函数,就像我们可以将参数传递给vuex中的getter函数一样 . 这样的函数是返回函数的函数 .
例如,在商店的吸气剂中:
此getter可以映射到组件的计算函数:
我们可以在模板中使用这个计算函数,如下所示:
我们可以应用相同的方法来创建一个带参数的计算方法 .
并在我们的模板中使用它:
话虽这么说,我在这里并不是说这是用Vue做事的正确方法 .
但是,我可以观察到,当商店中具有指定ID的项目发生变化时,视图会使用此项目的新属性自动刷新其内容(绑定似乎正常工作) .
但是有些情况下需要这样做 . 我将向您展示一个使用getter和setter将值传递给计算属性的简单示例 .
和脚本
当单击按钮时,我们将传递给计算属性名称'Roland',并且在
set()
中我们将名称从'John Doe'更改为'Roland' .下面有一个常见的用例,当计算与getter和setter一起使用时 . 假设您有以下vuex商店:
在组件中,您希望将
v-model
添加到输入中,但使用vuex存储 .您还可以通过返回函数将参数传递给getter . 当您想要查询商店中的数组时,这尤其有用:
请注意,通过方法访问的getter将在每次调用时运行,结果不会被缓存 .
这称为方法式访问,它是is documented on the Vue.js docs .
我不完全确定你想要实现什么,但看起来你会完全没有使用方法而不是计算!