我有这样的看法:
<xsl:comment>ko with: resolve(1)</xsl:comment>
<xsl:comment>ko template: { name: typeName }</xsl:comment>
<xsl:comment>/ko</xsl:comment>
<xsl:comment>/ko</xsl:comment>
和一个视图模型(视图的数据上下文),其方法如下:
self.resolve = function (id) {
var obs = ko.observable(null);
self.getItemByIdAsync(id).done(obs);
return obs;
};
由于某种原因,这变成了一个无限循环。我的猜测是 with-binding 认为它取决于 observable 的值,obs
并且当它被更新时,with-binding 会尝试再次运行 resolve,一次又一次......
如何修改此代码以便解析只运行一次?
我想要做的是有一个动态的视图模型来适应视图想要呈现的内容。如果视图试图解析某个视图模型上下文中的项目,它应该异步加载该项目,为其创建一个新的视图模型并将其作为子视图模型添加到 datacontext-vm。
我在其他地方看到过这种异步可观察模式,但我似乎用错了。