将 Vue.js computed 属性 添加到从服务器收集的数据

Add Vue.js computed property to data gathered from a server

来自 Knockout.js,在那里你可以简单地通过定义在任何地方创建一个 observable,在 Vue.js 中有类似的东西吗?

let vm = {
    someOtherVar: ko.observable(7),
    entries: ko.observableArray()
};

function addServerDataToEntries(data) {
    data.myComputed = ko.pureComputed(() => vm.someOtherVar() + data.bla);
    vm.entries.push(data);
}

addServerDataToEntries({ bla: 1 });

在我的 Vue.js 项目中,我从服务器获取对象列表。对于这些对象中的每一个,我想添加一个可以在 v-if 绑定中使用的计算 属性。我怎样才能做到这一点?

我不熟悉 Knockout 的处理方式,但听起来像是 Vue 的计算方式。创建一个数据对象来保存您获取的数据:

data() {
  return {
    items: null
  }
}

想象一下在 created 钩子(或 Vuex,任何地方)中获取它:

async created() {
  const response = await axios.get(...);
  this.items = response.data;
}

创建你的计算:

computed: {
  itemsFormatted() {
    if (!this.items) return null;
    return this.items.map(item => {
      // Do whatever you want with the items
    });
  }
}

这是一个使用此模式的 demo,我在其中加载一些数据并从中打印出过滤结果。如果我误解了你要找的东西,请告诉我。 (您可以在控制台看到原始的抓取数据。)