绑定值不起作用,总是为空

时间:2013-02-13 09:44:37

标签: knockout.js

我有一个包含两个字段的表:日和小时,但只有天字段值,或许它是一个淘汰的bug或者我不能理解的一些奇怪的东西。

这是视图(jade而不是html):

                p
                    label(for='dates') Datas
                        span.required *
                        &nbsp
                        span(data-bind='visible: dates().length > 1')
                    ul#list-dates(data-bind='foreach: dates()')
                        li
                            div.form-inline
                                input.input-small(type='text', name='dateDay', data-bind='value: day, hasfocus: true')
                                span -
                                input.input-mini(type='text', name='dateHour', date-bind='value: hour')
                                a.btn(href='#', data-bind='click: $root.addDate')
                                    i.icon-plus

这是javascript:

var DateModel = function(day, hour) {
    var self = this;
    self.day = ko.observable(day);
    self.hour = ko.observable(hour);
};

function DateViewModel() {
    var self = this;
    self.dates = ko.observableArray([
        new DateModel("", "")
    ]);

    self.addDate = function() {
        var pos = self.dates().length;
        pos = pos-1;

        console.log("Day: " + self.dates()[pos].day());
        console.log("Hour: " + self.dates()[pos].hour());

        if (self.dates()[pos].day() != '' && self.dates()[pos].hour() != '')
            self.dates.push(new DateModel("", ""));
    }
}

ko.applyBindings(new DateViewModel());

当按下addDate时,它会假设检查之前添加的日期和小时条目以创建新字段。谢谢!

1 个答案:

答案 0 :(得分:2)

您的“小时”绑定无效,因为您错过了 data-bind属性。

你有:

input.input-mini(type='text', name='dateHour', date-bind='value: hour')

哪个应该是

input.input-mini(type='text', name='dateHour', data-bind='value: hour')
相关问题