javascript - vue 计算属性怎么传参
问题描述
计算属性怎么传参?
<ul> <li v-for='item in goods' : v-text='item.name'></li></ul>data: { goods: [{id: 2,type: 3,name: ’薯片’ },{id: 3,type: 5,name: ’冰红茶’}]},computed: { goodsType: function(type){switch (type) { case 3:return 'color: #ff9900'break; case 5:return 'color: #00BC0C'break;} }}
问题解答
回答1:传不了参的,你可以写成methods
回答2:首先,计算属性里的方法是传不了参的,根据你的代码我想你想要实现的是根据type的改变去返回颜色,那么你应该明白的是计算属性返回的值只跟它里面的依赖有关,当依赖改变的时候就会触发计算属性去重新计算然后改变值,所以你应该让type变成该vm的一个数据,进而成为该计算属性的依赖。简单代码如下:
data: { goods: [], type: 0 //这个type作为你后面计算属性的依赖项,通过其他方法改变它的值即可。},computed: { goodsType: function(){//这里将会依赖于此vm的type值,当type值改变,就会重新计算switch (this.type) { case 3:return 'color: #ff9900'break; case 5:return 'color: #00BC0C'break;} }}回答3:
这个需求用一个对象实例数据不就可以解决了吗?
colors: { 3: ’#ff9900’, 5: ’#00BC0C’}
绑定 style 为 {color: colors[item.type]}
回答4:https://cn.vuejs.org/v2/guide...计算-setter
计算属性默认只有 getter ,不过在需要时你也可以提供一个 setter :
// ...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] } }}// ...
相关文章:
1. 在windows下安装docker Toolbox 启动Docker Quickstart Terminal 失败!2. node.js - mongodb查找子对象的名称为某个值的对象的方法3. html5 - 图片一般一怎么的形式存放在服务器中的?4. 网页爬虫 - python 爬取网站 并解析非json内容5. 百度地图api - Android 百度地图 集成了定位,导航 相互的jar包有冲突?6. javascript - 回调函数和闭包的关系7. 浅谈Vue static 静态资源路径 和 style问题8. python - flask post提交timestamp不能作为参数,这是为什么?9. android-studio - 文件没问题的情况下not read packageName from xxxAndroidManifest.xml?10. node.js - express框架,设置浏览器从缓存中读取静态文件,只有js从缓存中读取了,css还有一些图片为何没有从缓存中读取?

网公网安备