Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 拼接以更新KO可观测阵列显示错误_C#_Knockout.js - Fatal编程技术网

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