Каждый раз, когда вы звоните 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>
Лучший способ решить, должно ли что-то быть в Subversion, - это помнить, что это система контроля версий . Если вам не нужно помнить, как это менялось с течением времени, это не обязательно должно быть в svn
. Используйте svn: ignore
, чтобы исключить файлы из такого рассмотрения.
В данном случае дело обстоит именно так: вам не важно, как сгенерированные файлы менялись с течением времени, только исходный код, используемый для их создания. Это означает, что они должны быть исключены из Subversion. Вы можете сделать это с помощью ловушки перед фиксацией - например, принудительно запретить фиксацию всех файлов, сгенерированных кодом. У меня есть любимая фраза для этой тактики: «Вариант рецепт, а не торт».
А как узнать, есть ли у вас последний сгенерированный файл?
Точно; вы этого не сделаете, потому что сгенерированные файлы зависели от источника, из которого они были созданы. Ваш следующий шаг - убедиться, что ваш процесс сборки автоматически генерирует эти файлы с учетом исходного исходного кода, но это, вероятно, отдельный вопрос StackOverflow, если вы уже не знаете, как это сделать.
Одно из рассмотренных нами решений - исключить файлы, сгенерированные кодом
Да! Тысячу раз да! Никогда не выполняйте контроль версий файлов, которые вы можете создать из других файлов. Вместо этого добавьте правила генерации в ваш make-файл (или другой сценарий сборки).
они автоматически добавляются в репозиторий
Что их автоматически добавляет? Насколько я помню, мне всегда приходилось добавлять файлы вручную. Если инструмент, который автоматически добавляет, неправильный, то, может быть, исправить этот инструмент - правильный путь?
если мы не забыли исключить его
Добавляете ли вы инструмент генерации комментарий «файл, автоматически созданный $ TOOL», и добавить перехватчик subversion, который находит файлы для этого комментария и отклоняет их. Сделайте подходящие условия для инструментов генерации кода; например: если файл содержит "
Вам следует использовать svn: ignore , потому что вы действительно не хотите передавать автоматически сгенерированный материал для Subversion.
Может быть, я простой, но Я бы не стал хранить сгенерированные файлы в системе контроля версий. Поскольку он сгенерирован, не имеет смысла хранить историю его версий.
Еще одна хорошая стратегия - не писать код в сгенерированных файлах. Держите их отдельно. Тогда неважно, кто их генерирует, это не имеет значения.
Держите вашу логику вне сгенерированного файла.
Имя сгенерированного файла что-то вроде className.autoGenerated.cs и добавьте рекурсивный атрибут svn: ignore с соответствующим шаблоном имени «* .autoGenerated.cs».