代码之家  ›  专栏  ›  技术社区  ›  Ulukbek Abylbekov

V-for=“项目中的项目”。在计算属性中使用“item”

  •  2
  • Ulukbek Abylbekov  · 技术社区  · 6 年前

     <div v-for="list in getList" :key="list.id" class="tab">
            <h3>{{day(list)}}</h3>
            <div class="details">
                <img :src="require('../assets/day.svg')" alt="icon">
                <h4 class="description">{{list.weather[0].description}}</h4>
                <h4 class="max-temp">{{list.temp.max}}°C</h4>
                <h4 class="min-temp">{{list.temp.min}}°C</h4>
            </div>
        </div>
    

    还有我的剧本:

    day(arg) {
      var timestamp = arg.dt;
      var a = new Date(timestamp * 1000);
      var days = [
        "Sunday",
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday",
        "Saturday"
      ];
      return days[a.getDay()];
    },
    

    如何使用列表作为参数?或者是否有任何方法可以将“列表”传递给我的计算属性?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Phil    6 年前

    计算属性不接受参数,但可以使用 filter

    在组件定义中

    filters: {
      weekday (timestamp) {
        let date = new Date(timestamp * 1000)
        return date.toLocaleDateString('en', {weekday: 'long'})
      }
    }
    

    在你的模板里

    <h3>{{ list.dt | weekday }}</h3>
    

    过滤器比方法更可取,因为方法在每个渲染周期中都会运行。看到了吗 https://vuejs.org/v2/guide/computed.html#Computed-Caching-vs-Methods

        2
  •  1
  •   You Nguyen    6 年前

    不能将参数传递给 computed property . 在VueJS, computed properties 是从 data .

    如果你想要这样的东西 传递论点 methods 而不是 计算属性

    如果你还想用 ,您可以基于列表数据派生一个新列表,这样,它将具有一个新属性,即 day

        3
  •  0
  •   maxshuty Fatih Hayrioğlu    3 年前

    您可以通过匿名函数将参数传递给计算机

    其他人提到,不能将参数传递给 computed ,但是您可以像这样轻松地执行此操作:

    computed: {
      day() {
        return (list) => {
           // You now have access to the list argument you're trying to pass this computed
        }
      }
    }
    

    template :

    <div v-for="list in getList" :key="list.id"> 
        <h3>{{day(list)}}</h3>
        <div class="details">
            <img :src="require('../assets/day.svg')" alt="icon">
            <h4 class="description">{{list.weather[0].description}}</h4>
            <h4 class="max-temp">{{list.temp.max}}°C</h4>
            <h4 class="min-temp">{{list.temp.min}}°C</h4>
        </div>
    </div>
    

    所有这些都是通过将数据传递给 computed 可能有它的用例,但大多数情况下,使用 method 或者 filter