我有一個viewmodel,其模板我想在應用程序狀態發生變化時在運行時動態更改。我提到了這個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;
可以看出,我構造一個返回viewModel模板的計算的observable。
我的視圖模型是這樣的:
function MyViewModel
{
this.template = ko.observable("MyTemplate");
}
我改變作爲Ajax調用的結果模板的值被完成,我看到計算觀察到正確調用以及(我把警報在在那裏來驗證它),但是HTML中的綁定不會更新我的viewmodel的模板。任何幫助將不勝感激。
更新:我發現導致它不工作的錯誤。基本上我在包括knockout.js之前包含了jquery.tmpl插件。刪除jquery.tmpl取得了訣竅!
謝謝!這工作:http://jsbin.com/ulosew/25/edit – 2012-07-18 15:14:44