Как я могу очистить это текстовое поле?

Следующий мифриловый код предназначен для очистки текстового поля после извлечения значения из него. Он не очищает текстовое поле (или вообще ничего не делает). Как я могу заставить это работать?

Обратите внимание, что если я изменю эту строку:

           this.newItemName("");

чтобы:

            this.newItemName("abc");

затем текстовое поле обновляется новым значением. Но я хочу очистить это.

var app = {
    controller: function() {
        this.newItemName = m.prop("");

        this.makeNewItem = function(name) {
            if (name) {
                this.newItemName("");
            }
        }
    },
    view: function(ctrl) {
        return m("div", [ m("span", "new item"),
                       m("input",
                        { type: "text",
                          onchange: m.withAttr("value", ctrl.makeNewItem.bind(ctrl)),
                          value: ctrl.newItemName() })]);
    }
};

m.module(document.body, app);

1 ответ

Решение

Ваш код работает: http://jsfiddle.net/h89k7/1

Возможно, вы используете старую версию Mithril.

Код, приведенный ниже, для подтверждения SO:

var app = {
controller: function () {
    this.newItemName = m.prop("");

    this.makeNewItem = function (name) {
        if (name) {
            this.newItemName("");
        }
    };
},
view: function (ctrl) {
    return m("div", [m("span", "new item"),
    m("input", {
        type: "text",
        onchange: m.withAttr("value", ctrl.makeNewItem.bind(ctrl)),
        value: ctrl.newItemName()
    })]);
}
};

m.module(document.body, app);
Другие вопросы по тегам