Подрывная деятельность - контакт с генерацией кода

Каждый раз, когда вы звоните disco, myDisco является другой переменной. Вы не можете очистить старый таким образом. Вместо этого пусть обратный вызов очищается сам по себе:

disco() {
  this.stopIt = false;
  const myDisco = setInterval(() => {
    this.color == 'lightgreen' ? this.color = 'lightcoral' : this.color = 'lightgreen';
    if (this.stopIt) {
      clearInterval(myDisco);
    }
  }, 100)
},
stopDisco() {
  this.stopIt = true
},

Демонстрационный фрагмент кода ниже.

new Vue({
  el: '.container',
  data() {
    return {
      showing: false,
      color: 'lightgreen',
      stopIt: false,
      stopItt: false,
    }
  },
  directives: {
    'myEvent': {
      bind(el, binding) {
        const type = binding.arg
        const fn = binding.value
        el.addEventListener(binding.arg, binding.value)
      }
    }
  },
  methods: {
    change() {
      this.showing = !this.showing;
      this.color == 'lightgreen' ? this.color = 'lightblue' : this.color = 'lightgreen';
    },

    disco() {
      this.stopIt = false;
      const myDisco = setInterval(() => {
        this.color == 'lightgreen' ? this.color = 'lightcoral' : this.color = 'lightgreen';
        if (this.stopIt) {
          clearInterval(myDisco);
        }
      }, 100)
    },
    stopDisco() {
      this.stopIt = true
    },
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div class="container">
  <div class="row">
    <div class="col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3">
      <div :style="{color: color}">
        <h1>Directives Exercise</h1>
      </div>
      <button v-my-event:click="change" class="btn btn-primary">Show me!</button>
      <button v-my-event:mouseover="disco" v-my-event:mouseleave="stopDisco" class="btn btn-primary">Disco Time!</button>
      <p v-if="showing">
        Now you see me!
      </p>
      <p>
        {{ stopIt }}, {{ stopItt }}
      </p>
    </div>
  </div>
</div>

9
задан Vidar Langberget 17 May 2009 в 10:20
поделиться

6 ответов

Лучший способ решить, должно ли что-то быть в Subversion, - это помнить, что это система контроля версий . Если вам не нужно помнить, как это менялось с течением времени, это не обязательно должно быть в svn . Используйте svn: ignore , чтобы исключить файлы из такого рассмотрения.

В данном случае дело обстоит именно так: вам не важно, как сгенерированные файлы менялись с течением времени, только исходный код, используемый для их создания. Это означает, что они должны быть исключены из Subversion. Вы можете сделать это с помощью ловушки перед фиксацией - например, принудительно запретить фиксацию всех файлов, сгенерированных кодом. У меня есть любимая фраза для этой тактики: «Вариант рецепт, а не торт».

А как узнать, есть ли у вас последний сгенерированный файл?

Точно; вы этого не сделаете, потому что сгенерированные файлы зависели от источника, из которого они были созданы. Ваш следующий шаг - убедиться, что ваш процесс сборки автоматически генерирует эти файлы с учетом исходного исходного кода, но это, вероятно, отдельный вопрос StackOverflow, если вы уже не знаете, как это сделать.

24
ответ дан 4 December 2019 в 06:19
поделиться

Одно из рассмотренных нами решений - исключить файлы, сгенерированные кодом

Да! Тысячу раз да! Никогда не выполняйте контроль версий файлов, которые вы можете создать из других файлов. Вместо этого добавьте правила генерации в ваш make-файл (или другой сценарий сборки).

они автоматически добавляются в репозиторий

Что их автоматически добавляет? Насколько я помню, мне всегда приходилось добавлять файлы вручную. Если инструмент, который автоматически добавляет, неправильный, то, может быть, исправить этот инструмент - правильный путь?

если мы не забыли исключить его

Добавляете ли вы инструмент генерации комментарий «файл, автоматически созданный $ TOOL», и добавить перехватчик subversion, который находит файлы для этого комментария и отклоняет их. Сделайте подходящие условия для инструментов генерации кода; например: если файл содержит "

10
ответ дан 4 December 2019 в 06:19
поделиться

Вам следует использовать svn: ignore , потому что вы действительно не хотите передавать автоматически сгенерированный материал для Subversion.

4
ответ дан 4 December 2019 в 06:19
поделиться

Может быть, я простой, но Я бы не стал хранить сгенерированные файлы в системе контроля версий. Поскольку он сгенерирован, не имеет смысла хранить историю его версий.

2
ответ дан 4 December 2019 в 06:19
поделиться

Еще одна хорошая стратегия - не писать код в сгенерированных файлах. Держите их отдельно. Тогда неважно, кто их генерирует, это не имеет значения.

Держите вашу логику вне сгенерированного файла.

0
ответ дан 4 December 2019 в 06:19
поделиться

Имя сгенерированного файла что-то вроде className.autoGenerated.cs и добавьте рекурсивный атрибут svn: ignore с соответствующим шаблоном имени «* .autoGenerated.cs».

0
ответ дан 4 December 2019 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: