Knockout-3.2.0-内部列表<对象>推送问题
Knockout-3.2.0 - Inner list<object> push issue
我正在为asp应用程序使用knockout.js。我有一个由控制器操作返回到视图的对象列表,此外,列表中的那些对象指向一个对象列表。我无法通过淘汰将新对象添加到内部列表中。到目前为止,我所做的是:
@{
var initialData = @Html.Raw(new System.Web.Script.Serialization
.JavaScriptSerializer().Serialize(Model));
}
在视图模型中:
LineItemFields = ko.observableArray(@initialData );
在视图模型中添加函数可以执行以下操作:
addLineItem = function () {
ko.utils.arrayForEach(ko.toJS(LineItemFields), function (item) {
item.LineItemValues.push({"FieldValue": "0", "configseqid": 0, "FieldID": 0,
"isVisible": true, "isUpdatable": true });
});
//LineItemValues is the inner list of each object being iterated.
我尝试调试脚本,它成功地将一个新项推送到正在迭代的对象的内部列表,但不在原始对象中。含义项。LineItemValues是一个副本,而不是LineItemFields[index]。LineItemValue,我还能做些什么,以便将新项推送到可观察数组中?
更新:我的模板绑定和脚本是:
<tr data-bind="template: {name: 'LineItemDataTemplate', foreach: LineItemFields}"> </tr>
<script id="LineItemDataTemplate" type="text/html">
<td data-bind="foreach: $data['LineItemValues']"><input type="text" data-bind="value: FieldValue, enable: $parent.isUpdatable" /></td>
</script>
ko.toJS()
将创建observableArray
的纯js副本。您需要使用包裹在可观察阵列中的原始阵列:
ko.utils.arrayForEach(LineItemFields(), function (item) {
item.LineItemValues.push({ "FieldValue": "0", "configseqid": 0, "FieldID": 0,
"isVisible": true, "isUpdatable": true });
});
相关文章:
- 点击<对象>
- 未能运行构造函数:TypeError:对象#<对象>没有方法'addPlugin'
- JS对象->来自jquery ajax的JSON提交->php迭代
- 如何转换列表<对象>转换为JsonResult
- 为什么不是't html<对象>元素响应鼠标事件
- 如何使用C#列表<对象>在Javascript中
- 使用<对象>用于SVG和HTML中的内联css以编辑填充
- 未捕获的类型错误:对象#<对象>没有方法'绑定'-脊梁骨
- jwplayer转换<对象>到javascript
- AngularJS变量转换为html<对象>属性
- 如何在页面加载到<对象>要素
- 未捕获的类型错误:对象#<对象>没有方法'substr'带标签的标记
- <嵌入>或者<对象>标签视频播放错误处理程序-JavaScript
- 为什么我不能插入<对象/>标记到CKEditor4中
- 更改<对象>.原型的实例方法(通过上下文)
- Ember.js&Q单位:“;类型错误:对象#<对象>没有方法'getHandler'
- Node Selenium WebDriver-目标浏览器必须是字符串,但为<对象>
- <对象>标签
- "对象#<对象>没有方法”;完整日历
- 使用带有<对象>