我的目标是显示“noSets”模板,如果observableArray长度小于0并且呈现模板带有项目详细信息 - “showSets”,如果observableArray长度大于0 。我想为此使用模板,但FireBug显示错误:无法找到ID为“templatename”的模板。 这里是视图模型:Knockout.js动态选择模板错误:“无法找到具有ID的模板”
function SetsViewModel() {
var self = this;
self.usersets = ko.observableArray();
self.getTemplate = function() {
return self.usersets().length > 0 ? "showSets" : "noSets";
}
}
$(document).ready(function() {
ko.applyBindings(new SetsViewModel(), document.getElementById('user_sets'));
});
这里是HTML标记:
<div data-bind="template: { name: $root.getTemplate, foreach: usersets }" id="user_sets">
<script type="text/html" id="noSets">
<p>You do not have items yet.</p>
</script>
<script type="text/html" id="showSets">
<div class="block">
<input type="hidden" data-bind="value: $data.SetId" />
<div class="fav" data-bind="css: { fullop: $data.IsFavorite == true }">
<img alt="" src="img/fav.png" data-bind="click: $root.setFavorite">
</div>
<div>
<img alt="" data-bind="attr: { src: $data.SetImg }">
</div>
<div class="txt">
<h3 data-bind="text: $data.SetName, click: $root.go"></h3>
<p><span data-bind="text: $data.ItemsNumber + ' вещей,'"></span><span data-bind=" text: ' общая цена ' + $data.SetPrice + ' руб'"></span></p>
</div>
</div>
</script>
</div>
我怎样才能解决呢?
你试图把模板外'div'标签:相反,那么,当有0项展示一个完全不同的
div
更合适? – 2014-10-06 15:32:03