Кажется, есть много вопросов об этой проблеме с java.util.Scanner
. Я думаю, что более читаемым / идиоматическим решением было бы вызвать scanner.skip("[\r\n]+")
, чтобы удалить любые символы новой строки после вызова nextInt()
.
ИЗМЕНИТЬ: как показано ниже, как @PatrickParker, это вызовет бесконечный цикл, если пользовательские входы любые пробелы после номера. См. Их ответ на лучший шаблон для использования с пропуском: https://stackoverflow.com/a/42471816/143585
Как я могу сделать огонь предупреждения при каждом изменении, кроме первоначально?
blockquote>Нокаут будет вызывать обратный вызов обновления первоначально, когда привязка применяется к элемент и отслеживать любые зависимости (наблюдаемые / вычисленные), к которым вы обращаетесь. Когда какая-либо из этих зависимостей изменится, обратный вызов обновления будет вызван еще раз.
Я не думаю, что можно запустить только изменения, а не изначально.
Вы можете создайте обходное решение, соответствующее вашему сценарию, добавив событие изменения, связанное с вашим элементом внутри init.
init: function(element, valueAccessor) { // element should be the element you want to attach change event. $(element).on('change', function (value) { // do your stuff. }); }
Вот один из способов: сохраните массив элементов, который update
заполняет своим элементом, если его нет (это первый раз он запускается) и в противном случае делает любое действие. Поскольку у вас есть настраиваемый обработчик привязки, вы можете просто отключить его.
ko.bindingHandlers.test = {
update: function(element, valueAccessor) {
var seenElements = ko.bindingHandlers.test.seen,
val = valueAccessor()();
if (seenElements.indexOf(element) >= 0) {
alert("Test");
} else {
seenElements.push(element);
}
}
};
ko.bindingHandlers.test.seen = [];
var vm = {
alertOn: ko.observable(0),
raiseAlert: function() {
vm.alertOn.notifySubscribers();
}
};
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div data-bind="test:alertOn"></div>
<button data-bind="click:raiseAlert">Update</button>