【发布时间】:2014-04-17 01:58:03
【问题描述】:
我正在尝试使用 durandal compose 来加载外部 html 模板,如下所示:
<section>
<!-- ko with: $root.Table -->
<table class="input-cells" style="overflow-x:scroll;" data-bind="style: {width:Width},css: {alternateGreyRows: AlternateGreyBackgroundRows }">
<thead data-bind="foreach: HeaderRows">
<tr data-bind="foreach: Cells">
<!-- ko compose:{activationData:$data, model:'../indicators/cellstyles'} --><!-- /ko -->
</tr>
</thead>
<tbody data-bind="foreach: Rows">
<tr data-bind="foreach: Cells">
<!-- ko compose:{activationData:$data, model:'../indicators/cellstyles'} --><!-- /ko -->
</tr>
</tbody>
</table>
<!-- /ko -->
</section>
我的 cellstyles 模块看起来像这样的 HTML:
<!-- ko if: data.Style()=='42' --> <!-- @* simple text cell*@-->
<td data-bind="attr:{colspan:data.ColSpan, rowspan:data.RowSpan},text:data.Model.Name"></td>
<!-- /ko -->
JS:
define(['plugins/router', 'knockout', 'durandal/global', 'plugins/ajax', 'plugins/formatters'], function (router, ko, global, ajax,formatters) {
var vm = {};
vm.formatters = formatters;
vm.data = {};
vm.activate = function (data) {
vm.data = data;
debugger;
};
return vm;
});
cellstyles.html 根目录中的剔除无容器/虚拟元素(if 语句)被忽略(它没有执行并且被视为普通的 HTML 注释,因此 if 内部始终运行)。我做错了什么还是这是一个错误?
以前有人遇到过这种情况吗?
【问题讨论】:
-
不确定 durandal 是否接受评论作为根元素。尝试将单元格样式包装在 div 中。
-
你的权利,它似乎没有,但由于我正在构建一个 HTML 表,我不能在行内和 TD 之外有一个 div,因为那不是有效的 HTML。
-
在你的虚拟 if 语句中将
括起来,让 在你的作文中独立存在。我认为您有条件地显示的不是 ,而是 。根级注释让 Durandal 感到困惑。 你考虑过多体吗?它实际上是有效的 HTML。单元格样式违反了 Durandal 的规则 视图只有一个根元素(参见durandaljs.com/documentation/Creating-A-View.html)。考虑从视图中删除 if 逻辑并将其放到 cellstyles 视图模型中。
标签: knockout.js durandal