KnockoutJS提交绑定不与foreach一起使用

时间:2015-06-14 07:24:10

标签: javascript knockout.js

你好我无法使用敲门'提交'绑定'foreach'绑定。 我无法弄清楚这里的错误是什么。 请帮我找错。

我的观点模型是这样的:

function poReceivingModel(){
    var self = this;
    var initial_row = new poReceivingRowModel();
    self.rows = ko.observableArray([initial_row]);
    self.saveAndAdd = function(formElement){
        alert('entered into function');
        var row = new poReceivingRowModel();
        self.rows.push(row);
    };
};

function poReceivingRowModel(){
    var self = this;
    self.building = ko.observable();
    self.isele_abc = ko.observable();
    self.isele_num = ko.observable();
    self.isele_floor = ko.observable();
};

我绑定到'viewmodel'的html是这样的:

<tbody data-bind="foreach: rows">
    <form data-bind="submit: $parent.saveAndAdd">
        <tr>
            <td>
                <!-- input field here -->
            </td>

            <td>
                <!-- input field here -->
            </td>

            <td>
                <!-- input field here -->
            </td>
            <td>
                <!-- input field here -->
            </td>
            <td>
                <button type="submit">Save and Add</button>
            </td> 
        </tr>
    </form>
</tbody>

问题是当我点击'添加并保存'按钮时,'poReceivingModel'中的'saveAndAdd'功能未被调用。 我没有得到任何警告信息。 我尝试使用'button'元素上的'click'绑定来调用该函数。该函数以这种方式调用,即我收到警报消息。

更新 在firebug中,我看到 form 标签刚刚关闭 和按钮超出'form'标签。

1 个答案:

答案 0 :(得分:0)

我发现 form 标记不能在 table 标记内使用。解决方案 table 标记可以放在 form 标记内。 如果我们不想这样做,我们可以将表格标签更改为div,但这可能无法提供所需的输出。