【问题标题】:knockout automatically presses button after updating view更新视图后淘汰赛自动按下按钮
【发布时间】:2014-05-21 10:48:37
【问题描述】:

我在foreach 循环中有一个带有TRbind 的表:

<tbody data-bind="foreach: data">
    <tr>
        <td><input type="text" class="form-control" data-bind="value: DeviceSerialNumber" required /></td>
        <td><input type="datetime" class="form-control datepicker" placeholder="Od" data-bind="value: StartDate" required /></td>
        <td><button class="btn btn-default" data-bind='click: $root.removeRow'>Delete</button></td>
    </tr>
</tbody>

按钮绑定到这个函数:

    self.removeRow = function (eq) {
        self.data.removeAll([eq]);
    };

我是这样添加数据的:

var a = new Eq();
console.log(self);
a.StartDate(self.StartDateTemp());
a.DeviceId(self.DeviceTemp());
console.log(a);
console.log(self.data().length);
self.data.push(a);
console.log(self.data().length);

数据是:

var ViewModel = function () {
    var self = this;
    self.DeviceTemp = ko.observable();
    self.StartDateTemp = ko.observable();
    self.data = ko.observableArray([]);
}

该问题仅在IE10 中出现。如果我向数据数组添加任何内容,则视图将被更新。在视图中,我在tr 的末尾添加了绑定到remove 的is 按钮。出于未知原因敲除或浏览器单击该按钮并删除新添加的行。

你能帮帮我吗?

JSFIDDLE

【问题讨论】:

  • 你能创建一个 jsfiddle 来显示你的问题吗?
  • 错误只存在于本地内网??
  • 是的。仅在内网中,仅在 IE10 中。在 IE11 中工作...
  • 你确定你不在IE的兼容模式下?
  • 是的,我确定我在 IE10 模式下

标签: javascript internet-explorer knockout.js


【解决方案1】:

尝试在self.data.push(a); self.Test(""); 之后添加return false 以防止事件冒泡:

self.searchKeyboardCmd = function (data, event) {
        if (event.keyCode == 13) {
            if ((self.StartDateTemp() === undefined)
                || (self.number() != 1 && self.Test() != undefined)
                && (self.number() != 1 && self.Test() != "")) {

                alert("Bledna konfiguracja. Urzadzenia posiadajace numer seryjny nie moga byc dodane wiecej niz 1 raz")
                return true;
            }
            if (self.number() < 1 || isNaN(self.number())) {
                alert("Bledna ilosc");
                return true;
            }
            var a = new Eq();
            a.StorageId(self.StorageTemp());
            a.StartDate(self.StartDateTemp());
            a.DeviceSerialNumber(self.Test());
            a.DeviceId(self.DeviceTemp());
            a.Issue(self.Issue())
            a.IssueDesc(self.IssueDesc());
            a.Quantity(self.number());
            a.Project(self.Project());
            a.MeUser(self.MeUser());

            self.data.push(a);
            self.Test("");
            return false;
        }
        return true;
    };

【讨论】:

    猜你喜欢
    • 2016-12-10
    • 2017-08-26
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 2013-06-13
    • 2013-03-19
    • 1970-01-01
    • 2017-05-17
    相关资源
    最近更新 更多