【问题标题】:Knockout cancel update from jQuery UI dialog来自 jQuery UI 对话框的淘汰赛取消更新
【发布时间】:2016-08-05 11:33:11
【问题描述】:

我有父模型person。视图模型有一个 person 的可观察数组。要编辑/添加一个人,我有一个 jQuery UI 对话框(确定/取消)。

var viewModel = function(){
    var self = this;
    self.personEntry = ko.observable(new person());
    self.people = ko.observableArray();
    self.populatePeople = function(jsonPeopleObj){//adds person objects to people array};
};

personEntry 子模型使用with 绑定绑定到 jQuery UI 对话框。使用foreach 绑定在people 可观察数组上生成一个表。

现在,当我尝试修改记录时,我会在单击该行时调用以下函数。

function rowSelected(item,event){
    viewModel.personEntry(item);
    openDialog();
}

这将在 jQuery UI 对话框中打开包含所选行详细信息的对话框。但是,如果我更改了一个值,然后按对话框上的取消,表格仍然会被修改为一个不应该发生的新值。有什么想法吗?

如果需要,我可以放一个示例代码。

【问题讨论】:

  • 绝对应该使用knockout-jqueryui,它为各种标准的jQuery UI小部件提供了良好的敲除绑定。在您做任何其他事情之前,请查看the sample for the dialog widget。摆脱您的自定义点击事件处理程序,并尝试让它以这种方式工作。如果您的问题仍然存在,请将示例代码添加到您的问题中。
  • 我已经通过创建 person 对象的新实例并为其分配项目中的值来解决这个问题。然后我将这个新的人对象传递给 personEntry 项。这解决了它
  • 为了获得好的业力,您可以发布您的工作解决方案并附上一小段解释作为答案。也许其他人将来会发现它很有用。

标签: knockout.js jquery-ui-dialog


【解决方案1】:

我已经通过一些工作解决了这个问题......

https://jsfiddle.net/ramkiFiddle/v29exev5/59/

self.amendDetails = function(item, event) {
    itemProgressed = item;
    operation = 'Amend';
    var tempObj = new Person(item.Name(), item.Age());
    pageModel.personEntry(tempObj);
    $("#personEntry").dialog('open');
  }

【讨论】:

    猜你喜欢
    • 2016-03-21
    • 2013-11-25
    • 2013-07-06
    • 2017-04-17
    • 1970-01-01
    • 2012-05-22
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多