我正在为我的应用程序使用我自己的简单模板系统,并且每页将加载未知数量的“相同”模板。
所以基本上,我通过 ajax 调用获取一些数据并获得一个 uniqueId。然后,我将一个模板加载到我的页面中,并使用 uniqueId 应用 id 和 data-bind="with:"。
<div id="content-uniqueId">
<div data-bind="with: uniqueId">
...
</div>
</div>
然后我调用一个函数并尝试使用 uniqueId 创建一个 observableArray,以便它绑定到我的“with”。
就像是:
function(uniqueId) {
var theObservable = uniqueId;
theObservable = ko.observableArray(); // make the observable name equal to uniqueId
// get some data
theObservable(new data);
}
我创建了一个 JS Fiddle 来帮助解决问题,但它不起作用,因为我没有获取 ajax 数据或传递唯一的 id。
编辑:
根据以下 Tyrsius 的建议更新了 JS Fiddle 。
this[uniqueId] = ko.observableArray(new entityApp.dataContext.EntityModel(data));
绝对接近一步,但我收到一个错误:
初始化可观察数组时传递的参数必须是数组,或者为空,或者未定义
但是'new entityApp.dataContext.EntityModel(data)'返回一个对象数组,所以应该没问题。