3

我正在为我的应用程序使用我自己的简单模板系统,并且每页将加载未知数量的“相同”模板。

所以基本上,我通过 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。

JS小提琴在这里

编辑:

根据以下 Tyrsius 的建议更新了 JS Fiddle 。

this[uniqueId] = ko.observableArray(new entityApp.dataContext.EntityModel(data));

绝对接近一步,但我收到一个错误:

初始化可观察数组时传递的参数必须是数组,或者为空,或者未定义

但是'new entityApp.dataContext.EntityModel(data)'返回一个对象数组,所以应该没问题。

4

1 回答 1

3

Javascript 通过其对象索引器使动态分配和反射变得简单:

var ViewModel = function(propName) {
    this[propName] = ko.observable("reflection");
};

ko.applyBindings(new ViewModel("dynamic"));

这是一个演示绑定的小提琴。

于 2013-03-28T21:18:08.420 回答