使用Knockout.js Issue将元素动态添加到嵌套列表中
Add elements dynamically to the nested list using Knockout.js Issue
我在mvc4应用程序中使用Knockout-3.2.0.js。我有一个FieldInfo类的列表,它包含自己的列表。FieldInfo包含field_id、field_name、file_name和list。在进行了一些操作之后,我的操作将向视图返回一个列表。我在我的视图中设置了所有内容:
@{
var initialData = @Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model));
}
LineItemFields = ko.observableArray(@initialData);
可观察数组最初是一个列表,它本身有一个列表。在用户单击"添加"按钮之前,一切正常。我在viewModel中的添加按钮有以下内容:
addLineItem = function () {
ko.utils.arrayForEach(ko.toJS(LineItemFields), function (item) {
item.LineItemValues.push({ "FieldValue": "0", "FieldID": 1})
})
}
LineItemFields是有7个子项的主列表(例如),这7个子项各有一个列表,要求在这7个子项目的列表中各添加一个新元素。我试着调试,一切都很顺利,但仍然没有添加新行。以下是在模板绑定中:
<script id="LineItemDataTemplate" type="text/html">
<td data-bind="foreach: $data['LineItemValues']"><input type="text" data-bind="value: FieldValue, enable: $parent.isUpdatable" class="table-column" /></td>
</script>
<table>
<tr data-bind="template: {name: 'LineItemDataTemplate', foreach: LineItemFields}"> </tr>
</table>
Q1:内部列表必须像其父列表一样可观察吗?
Q2:如果没有,addLineItem函数有什么问题?
由于没有最新的答案,而且我已经成功了,所以我想发布一个答案来造福他人。我对viewModel进行了以下更改。
//added the observableArray to each item in the parent list
ko.utils.arrayForEach(LineItemFields(), function (item) {
item.LineItemValues = ko.observableArray(item.LineItemValues);
})
//Removed ko.toJS(..) from LineItemFields and applied ()
addLineItem = function () {
ko.utils.arrayForEach(LineItemFields(), function (item) {
item.LineItemValues.push({ "FieldValue": "0", "FieldID": 1});
})
}
相关文章:
- 将嵌套对象数据添加到窗体中
- 如何以编程方式添加到可变嵌套对象中
- 嵌套的主干视图未添加到DOM中
- Javascript对象/名称空间-如何访问从嵌套函数添加的属性(包括示例)
- 限制要在嵌套列表jQuery中添加的列表元素的数量
- 嵌套循环以添加数字
- 如何在使用具有嵌套视图的 ui 路由器时添加用户控制器
- 添加嵌套视图后代码停止工作
- 向嵌套对象添加属性 - Javascript
- 删除和添加嵌套对象中同一索引处的对象
- 重新思考DB,将元素添加到嵌套的数组中
- 如何使用角度 JS 添加嵌套的添加字段
- 添加嵌套引号
- 如何在Android中添加嵌套对象作为JavascriptInterface
- 如何添加嵌套的ul和li
- javascript:在对象中添加嵌套属性
- 使用Javascript为JSON添加嵌套键
- 在angular中如何向ng-repeat中添加嵌套对象
- 当使用现有的HttpProxy添加嵌套ajax调用时,远程过滤值不应用于网格
- 用JQuery添加嵌套窗体“;未捕获的SyntaxError:意外的令牌ILLEGAL“;