【发布时间】:2013-10-16 10:33:30
【问题描述】:
我尝试在使用拼接编辑记录后更新表,但出现如下错误。性别是一个单选按钮。我什至试图删除它,下一个字段显示错误。我在这里做错了什么?
未捕获的 ReferenceError:无法解析绑定。 绑定值:文本:性别 消息:性别未定义
我看到了类似的帖子Splicing new array of items onto existing Knockout observable array causes binding errors,但它似乎对我不起作用。
查看模型
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)/"
}
]
拼接
var getjsondata = ko.toJSON(self.SearchResults, ['name', 'gender', 'dob', 'joindate']) // select only what is required to show
console.log(getjsondata);
var obj = JSON.parse(getjsondata); // convert JSON to JS string
alert(obj[0].gender); //M Male, F Female
self.SearchResults.splice(self.CurrentIndex, 1, obj); // updates the row that was edited <-- shows an error here
编辑时的单选按钮绑定
<td> Gender </td>
<td>
<input type="radio" id="rdMale" name="Gender" value='M' data-bind="checked: $root.gender" />
<input type="radio" id="rdFemale" name="Gender" value='F' data-bind="checked: $root.gender" />
</td>
编辑 1 下面的模板显示了当我根据 DOB、JoinDate 搜索一些数据时...
<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>
编辑 2
我这样改代码
self.SearchResults().splice(self.CurrentIndex, 1, obj);
现在 Uncaught ReferenceError: Unable to parse bindings。绑定值:文本:性别消息:性别未定义错误未显示,但行未随更改而更新。我哪里错了?
编辑 3
Jfiddle http://jsfiddle.net/7LYad/1/
更新
这个小提琴没有任何错误,但没有发生拼接,也没有更新 observables。我哪里错了。我应该有两种视图模型,一种用于显示网格,一种用于保存,一种用于编辑、保存和拼接?
【问题讨论】:
-
一个 jsfiddle 会很好。但我认为你不需要$root。只需绑定性别。
-
更新了我的问题。我使用 $root 作为数据在表格上显示一次。编辑行将显示要编辑的屏幕。然后保存应该更新已编辑但不更新的行
-
我删除了 $root 但仍然显示该错误。我不太确定如何创建一个 jsfiddle 来复制我的问题。但我认为第三个参数 obj 是一个数组,这可能会导致问题
-
这是错误 - Uncaught ReferenceError: Unable to parse bindings。绑定值:文本:性别消息:性别未定义
-
我在编辑 2 中添加了我所做的更改。现在该错误未显示,但该行未更新
标签: c# knockout.js