【发布时间】:2012-07-16 13:10:54
【问题描述】:
我有一个视图模型,当我的应用程序状态发生变化时,我想在运行时动态更改其模板。我提到了这个link 同时提出我的解决方案。
在我的 html 页面中,我有一个绑定到视图模型列表的 div:
<div class="app"
data-bind="template: {name: templateSelector, foreach: viewModelBackStack}">
</div>
而我的 templateSelector 方法如下所示:
this.templateSelector = function(viewModel)
{
if (!_itemTemplate)
{
_itemTemplate = ko.computed(function() {return this.template();}, viewModel);
}
return _itemTemplate();
}
var _itemTemplate;
可以看出,我正在构建一个计算的 observable,它返回 viewModel 的模板。
我的视图模型如下所示:
function MyViewModel
{
this.template = ko.observable("MyTemplate");
}
由于完成了 ajax 调用,我正在更改模板的值,并且我看到计算的 observable 也被正确调用(我在其中放置了一个警报以验证它),但是 html 中的绑定没有更新我的视图模型的模板。任何帮助将不胜感激。
更新:我发现了导致它无法工作的错误。基本上我在包含 knockout.js 之前包含了 jquery.tmpl 插件。删除 jquery.tmpl 就行了!
【问题讨论】:
标签: templates dynamic knockout.js jquery-templates