Knockout.js 订阅包含成员ko.observeable()的ko.observearray()

Knockout.js 订阅包含成员ko.observeable()的ko.observearray(),knockout.js,Knockout.js,我正在根据从服务器发送的数据动态构建视图模型,在本例中已经进行了简化 除了我的主表单之外,我还计划运行一个摘要表单,该表单将循环遍历所有可用的观察值,并对数据进行处理 我使用了一个ko.observearray(),认为这是一个简单的地方,可以转储所有成员的可观察内容,然后订阅更改 我的问题是订阅从未被取消。你知道我做错了什么吗? 请注意,我对其他解决方案持开放态度,只要我的摘要视图模型可以在所选值(动态生成,因此长度和名称会有所不同)发生更改时得到通知,这很好,使用什么技术对我来说并不重要 代

我正在根据从服务器发送的数据动态构建视图模型,在本例中已经进行了简化

除了我的主表单之外,我还计划运行一个摘要表单,该表单将循环遍历所有可用的观察值,并对数据进行处理

我使用了一个ko.observearray(),认为这是一个简单的地方,可以转储所有成员的可观察内容,然后订阅更改

我的问题是订阅从未被取消。你知道我做错了什么吗?

请注意,我对其他解决方案持开放态度,只要我的摘要视图模型可以在所选值(动态生成,因此长度和名称会有所不同)发生更改时得到通知,这很好,使用什么技术对我来说并不重要

代码和

var createUserViewModel=函数(名称)
{
var模型={};
var length=names.length;
model.selectedValues=ko.observatarray();
对于(变量i=0;i
使用动态参数的好主意。我想我已经为你找到了一个很好的解决方案……稍加修改,你现在得到了比你原来的小提琴更具活力的东西::

需要注意的主要事项之一是进行了泛化,该泛化将必要的对象减少为整个模型的一个ViewModel对象,然后是一个较小的对象,以模拟您正在抛出的键/值对

var NameValuePair = function (name){
    var self = this;
    self.name = name;
    self.value = ko.observable();
}
而且,你的加价现在完全是动态的

<!-- ko foreach: selectedValues -->
<p>
    <label data-bind="text: name"></label> 
    <input data-bind="value: value" />
    <label data-bind="text: value"></label>
</p>
<!-- /ko -->



希望这对你有用…推送未知键值对的好小微项目。

谢谢@beauXjames你的代码很有帮助,让我在实际代码上取得了很好的进展。我在这方面遇到了一个障碍,如果您能看到代码,我将不胜感激。新问题看起来您找到了答案!
<!-- ko foreach: selectedValues -->
<p>
    <label data-bind="text: name"></label> 
    <input data-bind="value: value" />
    <label data-bind="text: value"></label>
</p>
<!-- /ko -->