使用 Ajax 形式挖空推送新数组项
Knockout push new array item using Ajax form
我的应用程序是MVC 5 c#,我使用以下形式来更新表:
@using (Ajax.BeginForm("AddOha", "Medication", new AjaxOptions()
{
UpdateTargetId = "result",
OnSuccess = "getresult",
HttpMethod = "POST"
}))
{
<input id="MedName" name="MedName" value="" class="input-sm form-control" style="width: 100px" placeholder="Value"/>
<input type="submit" value="Save" class="btn btn-primary"/>
}
这是我的淘汰赛名单:
<tbody data-bind="foreach: OhaList">
<tr>
<td>
<input data-bind="value: Name" class="input-sm form-control" style="width: 100px" placeholder="Value" />
</td>
</tr>
</tbody>
下面是视图模型:
var ViewModel = function() {
var self = this;
this.OhaList = ko.observableArray([]),
$.ajax({
type: "GET",
url: '@Url.Action("xxx", "xxx")',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
self.OhaList(data);
},
error: function (err) {
alert(err.status + " : " + err.statusText);
}
});
var ohaMed = {
Name: self.Name
};
self.ohaMed = ko.observable();
}
ko.applyBindings(new ViewModel());
我尝试使用以下方法更新列表:
var getresult = function(data) {
if (data[0].Name !== "") {
// alert(data[0].Name);
ViewModel.OhaList.push({ Name: data[0].Name });
// ViewModel.OhaList.push({ Name: "1});
} else {
alert("failed");
}}
尽管我从控制器获得结果,或者即使我对值进行编码,也会收到以下错误:
Unable to get property 'push' of undefined or null reference
感谢您的建议。
您需要保留对视图模型的引用,这里有一种方法可以做到这一点:
window.viewModel = new ViewModel();
ko.applyBindings(window.viewModel);
然后在 getresult 函数中,您需要使用该 ViewModel 实例将值推送到,而不是 ViewModel 类型本身:
var getresult = function(data) {
if (data[0].Name !== "") {
// alert(data[0].Name);
window.viewModel.OhaList.push({ Name: data[0].Name });
// ViewModel.OhaList.push({ Name: "1});
} else {
alert("failed");
}
}
相关文章:
- javascript处理一个对象数组以获得一个新的对象数组
- 创建新的javascript数组,从对象属性中提取数据
- 在现有的json对象中添加一个新的键(数组)
- 比较两个JSON数组并重新排列新的JSON数组格式
- 使用 JavaScript 比较 2 个数组并创建一个新的对象数组,该数组不包含与 id 字段匹配的对象
- 将字段添加到新的 JavaScript 数组副本
- 在运行之前确定数据是否是新的(将数组与 JSON 进行比较)
- 如何将两个 JS 数组连接到一个新的对象数组作为键:值
- 如何将现有 JSON 对象数组的某些对象复制到新的 JSON 数组
- Javascript:用一个新值替换数组中的所有内容
- 将对象的值推送到新的对象数组中
- 通过比较和推送唯一对象来创建新的对象数组
- 计算JavaScript数组元素的出现次数,并放入一个新的2d数组
- 在angular(循环中的循环)中创建新的对象数组时遇到麻烦
- 如何循环遍历新生成的数组而不覆盖它?
- 我如何组合数组中的数据值来创建一个新的数组
- 如何在Mongoose中添加一个新对象到数组
- 什么时候改变子数组更新子数组vs.创建一个新的子数组?[JavaScript]
- 通过组合另一个数组的两列来形成一个新的javascript数组
- 为什么我不能将new Array(3)映射到一个包含新值的数组?