knockout.js основная проблема отправки обязательна - PullRequest
3 голосов
/ 26 марта 2012

, поэтому я использую простую привязку для передачи данных функции:

<form data-bind="submit: printTest">
    Enter a weight in the box: <BR>
    <INPUT TYPE="text" id="inputWeight" VALUE=""><P>
    <button type="submit">Submit</button>
</form>

Я только начал работать с KO, поэтому я должен был написать базовую функцию печати для проверки этого ввода:

self.printTest = function(xxx){

        var myTextField = xxx;
    if(myTextField.value != "")
        alert("You entered: " + myTextField.value)
    else
        alert("Would you please enter some text?")
    }

Моя проблема в том, что когда я нажимаю "Отправить", я получаю "вы ввели: не определено", но когда я обновляю страницу, вход в форму получает предупреждение. это очень расстраивает! IDK, если это проблема нокаута или простой HTML.

1 Ответ

3 голосов
/ 27 марта 2012

Вы не показали весь код, поэтому я попытаюсь ответить на это, основываясь на том, что выше. Во-первых, привязка submit просто выполняет функцию при отправке формы и позволяет вам остановить / подтвердить отправку формы.

При отправке запуска ему передается элемент формы dom, ему не передается входное значение, поэтому этот код никогда не сможет работать.

Чтобы распечатать значение ввода, сначала необходимо связать значение ввода со значением в вашей модели.

<input type="text" id="inputWeight" value="" data-bind="value: inputWeight" />

Затем вы можете предупредить значение следующим образом.

var viewModel = function () {
    var self = this;
    self.inputWeight = ko.observable();

    self.printTest = function() {

        var valueEntered = self.inputWeight();
        if(valueEntered) {
            alert("You entered: " + valueEntered);
        }
        else {
            alert("Would you please enter some text?");
        }
    }
};

Вот рабочая скрипка

К вашему сведению - в вашем исходном коде / разметке были некоторые ошибки, пропущена неправильная разметка точек с запятой, которую я исправил.

Надеюсь, это поможет.

...