Knockout取消了jQuery UI对话框的更新

时间:2016-08-03 16:50:45

标签: knockout.js jquery-ui-dialog

我有父模型<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/border" android:orientation="horizontal" android:paddingBottom="5dp" android:weightSum="10"> <LinearLayout android:id="@+id/linearLayout2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginRight="5dp" android:layout_weight="9" android:orientation="vertical" android:paddingBottom="5dp"> <AutoCompleteTextView android:id="@+id/fromStationField" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="left" android:completionThreshold="1" android:gravity="left|start" android:hint="From" android:textAlignment="textStart" /> <AutoCompleteTextView android:id="@+id/toStationField" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/transparent" android:completionThreshold="1" android:hint="To" android:paddingLeft="4dp" android:paddingRight="4dp" /> </LinearLayout> <ImageView android:id="@+id/imageView" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:src="@android:drawable/ic_swap" /> </LinearLayout> </RelativeLayout> 。视图模型具有可观察的person数组。要编辑/添加一个人,我有一个jQuery UI对话框(确定/取消)。

person

使用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子模型绑定到jQuery UI对话框。使用with可观察数组上的foreach绑定生成表。

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

people

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

如果需要,我可以提供示例代码。

1 个答案:

答案 0 :(得分:0)

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

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');
  }