我以前用过淘汰赛的模板,所以我不知道为什么,这不是为我工作。 我尝试了两种不同风格的KO标记,没有工作。
<!-- more nesting levels -->
<div class="cal-day-tps" data-bind="foreach: timePeriods">
<div class="cal-day-tp-cont">
<div data-bind="template: { name: 'tp-ed-templ', data: $data }"></div>
//both of these methods fail
<!-- ko template: { name: 'tp-ed-templ', data: $data } -->
<!-- /ko -->
</div>
</div>
<!-- /more nesting levels -->
<script type="text/html" id="tp-ed-templ">
<!-- bunch of markup -->
</script>
我刚刚得到的错误“无法找到ID TP-ED-TEMPL模板”。
可能只是一个错字,但我一直没能找到它。
- 我在迪朗达尔的环境中使用KO,但是这不应该有所作为。
- 试图声明使用前的模板,并没有帮助。
- 别人跑进无解同样的事情无论是
这似乎是一个迪朗达尔问题,而不是淘汰赛 。
我试着在香草迪朗达尔设置了一些非常简单的情况下,它仍然做同样的事情。 甚至试图把脚本的同一位置嵌套的绑定,没有骰子。
答案很简单:您目前仍无法使用淘汰赛模板迪朗达尔内 。 然而,随着nemesv指出的那样,如果你把你的命名模板迪朗达尔之外,KO能够找到他们。 例如,的以外的任何地方<div id="applicationHost"></div>
元素。
其他的解决方法是要么使用Durandal的撰写功能,或者只是内联模板作为匿名。
淘汰赛的模板可能会在不久的将来得到支持。
我终于挖出这些答案上来就迪朗达尔谷歌组,
- 混合淘汰赛模板与迪朗达尔撰写
- 淘汰赛找不到的意见模板内
问题是,KO模板元素必须在DOM存在迪朗达尔视图绑定之前。 这是因为它被插入到DOM 之前,所以任何包含模板无法通过ID解决的视图绑定。
使用返回可观察到的一个功能,可用于以后再次触发模板结合..它的工作原理,但靠不住的。 (安if
结合可以用于类似的效果)。
// bind to this in markup:
// <div data-bind="template: {name: $root.templateName, .. }">
vm.templateName = function () {
return vm.TemplateId();
};
// Changing this will trigger an observable in the KO template binding;
// don't ask me why we have to pass in a function to 'name' ..
vm.TemplateId = ko.observable("dummy-template-id-that-exists");
// After the view is attached the correct template element is in the DOM
// so we can trigger the template to (re-)bind and it will find it.
function viewAttached () {
vm.TemplateId("the-real-template-id");
}