Как избежать дублирования кода для двух идентичных Vue приложений на одной странице? - PullRequest
0 голосов
/ 20 марта 2020

У меня есть страница, на которой я хотел бы использовать два почти идентичных Vue приложения. У них будет простая таблица с некоторой информацией о состоянии и несколькими input с. Единственное, чем они отличаются - это идентификатор таблицы. У меня есть отдельная функция, которая передает им данные и вызывается (при обратном вызове загружаемого состояния) с приложением Vue в качестве одного из его параметров.

Так что теперь у меня есть два приложения Vue в сценарий выше друг друга и строки 48/50 идентичны (и я могу ожидать, что они будут расти). У них есть несколько data элементов, несколько methods и один computed. Как я мог избежать такого ужасного дублирования кода?

Мое решение до сих пор состоит в том, чтобы заранее определить data, computed, methods (pre_...), а затем просто:

var app1 = new Vue({
  el: '#status_table_1',
  data: deepcopy(pre_data),
  methods: {
    error: function() { return pre_methods.error(this); },
    load: function(a, b, c) { return pre_methods.load(this, a, b, c); },
  },
  computed: {
    comp_prop: function() { return pre_computed.comp_prop(this); }
  }
}

, что делает его намного тоньше, но все еще много дублирования, и он просто чувствует неправильным ...

Есть идеи? Заранее спасибо!

...