C# 在KnockoutJS中修改可编辑表的Validate Observable

C# 在KnockoutJS中修改可编辑表的Validate Observable,c#,html,json,knockout.js,C#,Html,Json,Knockout.js,我实际上是在用可编辑网格做我的项目,我的数据来自JSON,并解析到字典中,得到键和值,并显示在表中 我有一个列有3个链接,修改,验证和取消 但是,用户编辑后,无法将输入标记中的值更新为标签标记 <table class="table table-hover"> <tbody data-bind="foreach: $root.testParams(parameters())">

我实际上是在用可编辑网格做我的项目,我的数据来自JSON,并解析到字典中,得到键和值,并显示在表中

我有一个列有3个链接,修改,验证和取消

但是,用户编辑后,无法将输入标记中的值更新为标签标记

 <table class="table table-hover">
                        <tbody data-bind="foreach: $root.testParams(parameters())">
                            <tr class="data-hover">
                                <td>
                                    <strong>
                                        <span id="key_params" data-bind="text:$data.key" />
                                    </strong>
                                </td>
                                <td>
                                    @*display label and input for dictionary<value>*@

                                    <input type="text" class="edit" data-bind="value:value,visible:$root.isItemEditing($data)" />
                                    <label class="read" data-bind="text:value,visible:!$root.isItemEditing($data)" />        

                                </td>
                                <td>
                                    <a href="#" class="action" data-bind="click: $root.editData.bind($root),visible:!$root.isItemEditing($data)">
                                        <i class="glyphicon glyphicon-edit"></i>&nbsp;Modify
                                    </a>

                                    <a  class="action" href="#" data-bind="click: $root.applyData.bind($root),visible:$root.isItemEditing($data)">

                                        <i class="glyphicon glyphicon-remove-circle"></i>&nbsp;Validate
                                    </a>

                                    <a class="action" href="#" data-bind="click: $root.cancelData.bind($root),visible:$root.isItemEditing($data)">
                                        <i class="glyphicon glyphicon-remove-circle"></i>&nbsp;Cancel
                                    </a>
                                </td>
                            </tr>
                        </tbody>
                   </table>

第一个问题是值必须是可观察的,这样当它在文本框中被修改时,标签也会被更新

下一步是编辑需要是可观察的,以便可以从编辑模式切换到显示模式

result.push({
             key: key,
             value: ko.observable(dictionary[key]),
             isEditing: ko.observable(false)
           });

<input data-bind="value:value,visible:isEditing()"  />
<label data-bind="text:value,visible:!isEditing()" />
result.push({
钥匙:钥匙,
值:ko.observable(字典[键]),
i编辑:ko.可观察(假)
});
最后一个问题是单击函数无效,甚至没有添加到模型中

edit: function (item) {
    item.isEditing(true);
},
cancel: function (item) {
    item.isEditing(false);
}

<a href="#" data-bind="click: $root.edit">Edit</a> 
<a href="#" data-bind="">Apply</a>
<a href="#" data-bind="click: $root.cancel">Cancel</a>
编辑:功能(项){
项。i编辑(正确);
},
取消:功能(项目){
项目。i编辑(假);
}

请说明实际问题好吗?让我们知道您遇到了什么错误或什么不起作用。@PatrickSteele:我上面提到的问题是输入标记,当它在可见绑定的编辑中时是可见的,然后我向输入标记输入一个新值,单击验证,但是标签标签没有更新输入标签中输入的新值谢谢你的回答,我使用这个函数是因为我没有控制权的数据是JSON格式的,我想把它转换成字典键和值。我可以问您为什么返回新的对象视图吗Model@TrangZinita我之所以更新它,是因为我已经为数组中的对象创建了一个新函数。还有其他方法可以做到这一点,但如果我想向对象添加更多功能,它提供了更大的灵活性。这个名字很差,因为我不知道里面有什么。如果你看一下这里的第2步,它会做同样的事情:第2步。为了根据文本输入更新标签,它需要是一个可观察的。谢谢你的回答,如果我有像Fidder一样的文件,它也对我有用,但是当我把它们分成3个文件,即biz.js、config.js和cshtml文件,当我为数据绑定设置visible时,foreach只循环了一次,你能看一下这个记事本吗:你缺少了viewModel中可以观察的参数
result.push({
             key: key,
             value: ko.observable(dictionary[key]),
             isEditing: ko.observable(false)
           });

<input data-bind="value:value,visible:isEditing()"  />
<label data-bind="text:value,visible:!isEditing()" />
edit: function (item) {
    item.isEditing(true);
},
cancel: function (item) {
    item.isEditing(false);
}

<a href="#" data-bind="click: $root.edit">Edit</a> 
<a href="#" data-bind="">Apply</a>
<a href="#" data-bind="click: $root.cancel">Cancel</a>