过滤计算的属性

时间:2019-08-02 11:26:08

标签: javascript vue.js vuejs2

我正在处理列表。您可以在其中添加和删除元素,并指定每个添加元素的数量。

我将所有元素都包含在我的数据中 示例:

[
  {
    "rowID": "21",
    "rowAnzahl": 1,
    "elementID": "127",
    "elementName": "Element 4"
  },
  {
    "rowID": "22",
    "rowAnzahl": 1,
    "elementID": "109",
    "elementName": "Element 3"
  },
  {
    "rowID": "",
    "rowAnzahl": "",
    "elementID": "106",
    "elementName": "Element 1"
  },
  {
    "rowID": "",
    "rowAnzahl": "",
    "elementID": "112",
    "elementName": "Element 2"
  }
]

然后我添加了两个计算的属性:

elements: function() {
      return this.testData.filter(function(e) {
        return e.rowID
      })
    },
    unusedElements: function() {
      return this.testData.filter(function(e) {
        return !e.rowID
      })
    },

然后我有以下方法:

methods: {
    addElement: function(index) {
      var item = this.testData[index];
      item.rowID = 'new' + this.rowCount++;
      item.rowAnzahl = 1;
    },
    removeElement: function(index) {
      var item = this.testData[index];
      item.rowID = '';
      item.rowAnzahl = '';
    }
  },

但现在我的问题是

对于我未使用的元素和元素的属性,索引从0开始。 但是因为我需要用于添加或删除元素的索引号,所以它不起作用。 是否可以通过我的elementID过滤方法? 还是可以将elementID设置为索引号?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用数组的findIndex函数搜索索引:

var elements = [...]; // Your list
function indexOfElement(elementID) {
    return elements.findIndex((entry) => entry.elementID == elementID);
}

编辑:也许我不正确理解您的问题。我还是要把这个留在这里

答案 1 :(得分:0)

现在,我找到了解决方案。 我更改了方法并将其连接到我的计算属性而不是数据。

    methods: {
    addElement: function(index) {
      var item = this.unusedElements[index];
      item.rowID = 'new' + this.rowCount++;
      item.rowAnzahl = 1;
    },
    removeElement: function(index) {
      var item = this.elements[index];
      item.rowID = '';
      item.rowAnzahl = '';
    }
  },

现在,简单的Index解决方案可以正常工作了。 有时它的帮助只是思考了一些不同的内容; D