我正在为我的应用程序使用自己的简单模板系统,并且每页将加载未知数量的“相同”模板。
基本上,我通过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小提琴,以帮助清理,但它不起作用,因为我没有获取ajax数据或传递唯一ID。
修改
Updated JS Fiddle,根据Tyrsius的建议如下。
this[uniqueId] = ko.observableArray(new entityApp.dataContext.EntityModel(data));
肯定只有一步,但我收到了一个错误:
初始化可观察数组时传递的参数必须是数组,或null或未定义
但是'new entityApp.dataContext.EntityModel(data)'返回一个对象数组,所以应该没问题。
答案 0 :(得分:2)
Javascript使用其对象索引器简化动态赋值和反射:
var ViewModel = function(propName) {
this[propName] = ko.observable("reflection");
};
ko.applyBindings(new ViewModel("dynamic"));
以下a fiddle证明了绑定。