C# 拼接以更新KO可观测阵列显示错误
在使用拼接编辑记录之后,我试图更新一个表,但我得到了如下错误。性别是一个单选按钮。我甚至试图删除它,下一个字段显示错误。我做错了什么 未捕获引用错误:无法分析绑定。 绑定值:文本:性别 消息:未定义性别 我看到了一个类似的帖子,但它似乎不适合我 查看模型C# 拼接以更新KO可观测阵列显示错误,c#,knockout.js,C#,Knockout.js,在使用拼接编辑记录之后,我试图更新一个表,但我得到了如下错误。性别是一个单选按钮。我甚至试图删除它,下一个字段显示错误。我做错了什么 未捕获引用错误:无法分析绑定。 绑定值:文本:性别 消息:未定义性别 我看到了一个类似的帖子,但它似乎不适合我 查看模型 var vmSearchResultsModel = function () { var self = this; self.SearchResults = ko.observableArray([]); //Holds t
var vmSearchResultsModel = function ()
{
var self = this;
self.SearchResults = ko.observableArray([]); //Holds the results of the search
}
返回到可观察数组的数据
"SearchResults": [
{
"id": 3,
"name": "Adrian D'Costa",
"dob": "/Date(-37776600000)/",
"gender": "M",
"joindate": "/Date(-37776600000)/" //<-- this is another issue I need to fix
},
{
"id": 14,
"name": "Janet D'Curz",
"dob": "/Date(-37776600000)/",
"gender": "F",
"joindate": "/Date(-37776600000)/"
}
]
现在,uncaughtreferenceerror:无法解析绑定。绑定值:text:gender消息:未定义性别错误不显示,但行不会随更改而更新。我错在哪里
编辑3
Jfiddle
更新
这把小提琴没有任何错误,但剪接没有发生,观测也没有更新。我哪里错了。我应该有两个视图模型,一个用于显示网格,一个用于保存,一个用于编辑、保存和拼接
您的问题与拼接无关:
$root.gender
告诉Knockout查找名为gender
的属性,该属性是ViewModel本身的属性(即您在ko.applyBindings
中指定的属性);$root
限定符总是指VM的顶层。很明显,你的虚拟机上没有这样的属性;相反,它是SearchResults
中对象的属性
如果有问题的HTML包含在带有foreach:SearchResults
绑定的内容中(或者是在使用foreach
或data
选项调用的模板中),那么只需删除限定符并写上“性别”
提琴后更新
1) 您从未将主视图模型中的EditEmployee
设置为真值,因此用于编辑员工的字段将永远不会显示
2) 在SaveEmpDetails
中,您试图将对象的JSON字符串表示形式(而不是对象本身)拼接到搜索结果中
当您拼接一个敲除的ObservalArray时,您不想拼接数组的值,而是要拼接底层数组本身。当您试图更改ObservalArray的值时,请确保不要“获取”该值,除非您计划将其设置为其他值-
self.SearchResults.splice(self.CurrentIndex, 1, getjsondata);
其他可行的方法—
self.otherArray = self.SearchResults().splice(self.CurrentIndex, 1, getjsondata);
来一杯鸡尾酒就好了。但我认为你不需要$root。只需绑定性别。更新了我的问题。我使用$root,因为数据在表上显示一次。编辑行将显示要编辑的屏幕。然后保存应更新已编辑的行,但不会删除$root,但仍会显示该错误。我不太确定如何创建一个JSFIDLE来复制我的问题。但我认为第三个参数obj是一个数组,这可能会导致问题这是错误-uncaughtreferenceerror:无法解析绑定。绑定值:text:gender消息:未定义性别我添加了edit2,其中包含我所做的更改。现在错误没有显示,但行没有得到更新,实际上它在那里,但我声明它的方式是错误的。在SearchResults中是一个具有性别的可观察数组,在外部,我将性别声明为一个可观察数组,它将保存编辑值。这是错误的,我不知道怎么做,任何建议我已经更新了我的第二小提琴现在编辑部分显示,但拼接仍然是一个问题。我试过PW Kad的小提琴,但仍然有一个问题我理解你的评论,但不知道如何做到这一点。让我继续努力。我也试过使用两种不同的视图模型,这甚至会引起更大的问题我累了。当我单击编辑链接并进行更改并保存时,它将删除已编辑的行并显示此错误-未捕获引用错误:无法解析绑定。绑定值:文本:性别消息:性别未定义您想做什么?我无法重写您的全部代码,我正在尝试向您展示要使用的正确语法。你希望你的代码做什么???我感谢你的帮助。我所要做的就是,当我保存时,我希望用新值更新行。再次感谢
<script type="text/html" id="TmplSearchResults">
<tr style="border-bottom: 1px solid #CCC;">
<td valign="middle" data-bind="text: name"></td>
<td valign="middle" align="center" data-bind="text: gender"></td>
<!-- ko if: ($root.SearchByVal() ==="DOB") -->
<td valign="middle" data-bind="textualDate: dob"></td>
<!-- /ko -->
<!-- ko if: ($root.SearchByVal()==="Join Date") -->
<td valign="middle" data-bind="textualDate: joindate"></td>
<!-- /ko -->
<td valign="middle" > <img type="image" title="edit" src="images/edit1.png" data-bind="event:{ click: $root.EditEmpDetails.bind($data, $index())}" /></td>
</tr>
</script>
self.SearchResults().splice(self.CurrentIndex, 1, obj);
self.SearchResults.splice(self.CurrentIndex, 1, getjsondata);
self.otherArray = self.SearchResults().splice(self.CurrentIndex, 1, getjsondata);