【问题标题】:Can I use Knockout.js-External-Template-Engine with nested models?我可以将 Knockout.js-External-Template-Engine 与嵌套模型一起使用吗?
【发布时间】:2012-08-07 01:02:43
【问题描述】:

我正在尝试使用嵌套模板的工作演示来实现 Knockout.js-External-Template-Engine

目前我有这样的设置

<ul data-bind="template: {name: 'TopTemplate'}"></ul>

<script type="text/html" id="TopTemplate">
    <li><span>Result</span>
        <ul data-bind=" template: {name:  'FooTemplate' , foreach: foos}">
        </ul>
    </li>
    <button data-bind='click: addFoo'>Add Foo</button>
</script>   

当我尝试将此 TopTemplate 移动到文件 (templates\view.html) 时,view.html

<li><span>Result</span>
<ul data-bind=" template: {name:  'FooTemplate' , foreach: foos} " style="list-style-type:circle;margin-left:15px">
</ul>
</li>
<button data-bind='click: addFoo'>Add Foo</button>

失败(无法解析绑定....foos 未定义)

这是我使用 whichTemplateToUse

更新的视图模型
  var viewModel = {
    isEditable: ko.observable(false),
    foos: ko.mapping.fromJS([]),
    loadInitialData: function () {
        ko.mapping.fromJS(serverData, dataMappingOptions, viewModel.foos);
    },
    loadUpdatedData: function () {
        ko.mapping.fromJS(serverData, dataMappingOptions, viewModel.foos);
    },
    whichTemplateToUse: function() {
        return viewModel.isEditable() ? 'edit' : 'view';
    }
};

我确定我错过了这里的重点 - 但我是否需要更改我的顶级模板数据绑定表达式

允许加载外部子模板。顶部模板适用于简单的静态文本,所以我认为基本的集成是正确的。

谢谢!

【问题讨论】:

  • 不确定是否有很多人使用旧的模板风格,新版本的淘汰赛有更优雅的做事方式
  • @Keith 你有可以提供的例子吗?
  • 答案是肯定的——ifandelse.com/?p=100

标签: knockout.js


【解决方案1】:

找到了一个很好的demo,它可以做到这一点。

【讨论】:

  • 你的 HTML 也是错误的,你的
  • 围绕着你的
      标签。它应该是相反的,就像在演示中一样:)
猜你喜欢
相关资源
最近更新 更多
热门标签