c# - 无法在现有页面中使用挖空模板

标签 c# asp.net asp.net-mvc asp.net-mvc-4 knockout.js

我有一个简单的 knockout 模板,但因为它位于使用 knockout 的现有页面中,所以我的模板无法正常工作。我没有在页面上看到你好。任何建议都适用!谢谢,

代码片段

<script type="text/html" id="childtag-template">
    <ul data-bind="template: { name: 'tag-template'}"></ul>
    <div data-bind="template: { name: 'keyword-template'}"></div>  <!-- new bit -->
</script>

模板

<script type="text/html" id="keyword-template">
  hello
</script>

在页面的文档就绪事件中存在以下内容

页面加载中

<script type="text/javascript">
    $(function () {
        window.helper.Start(@Html.Raw(Json.Encode(Model)););
    });

开始内容如下

启动方式

window.Helper= {
    Start: function (x) {
        var viewModel = Helper.XViewModel(x);
        window.Helper.ViewModel = viewModel;
        ko.applyBindings(viewModel);
        ...

当我可以成功加载模板时,我只需要一个直接从 knockout 示例中获取的简单表格,该表格允许添加和删除列表。我有这个独立工作但是当将标记和 js 放入现有文件时我得到 js 错误。

更新

我添加了以下更改(请参阅 viewModel.Keywords)。 Firefox 没有报告任何错误,但我没有在页面上看到我的问候语。

window.Helper = {
    Start: function (x) {
        var viewModel = Helper.XViewModel(x);
        window.ArticleManagerHelper.ViewModel = viewModel;
        ko.applyBindings(viewModel);

        viewModel.Keywords = ko.observable();  // new line of code

我已经在模板中添加了以下内容

    <input type="text" data-bind="value: Keywords"/>

最佳答案

好的,这是我为让它工作所做的。

请注意,我使用了 json 的简化版本,因此我可以创建一个有效的 jsFiddle,但概念仍然相同。

<!--html -->
<div data-bind="template: { name: 'keyword-template', data: Article }"></div>

<!-- template -->
<script type="text/html" id="keyword-template">
    <input type="text" data-bind="value: Keywords"/>
</script>
  1. 您在模板中定义了这两个部分,您需要将 html 中的绑定(bind)部分放在模板之外。除非我弄错了,它是某种嵌套模板并且缺少外部 html,否则很抱歉。
  2. 我需要指定要绑定(bind)的数据,即 data: Article

这是 jsFiddle 的链接:

http://jsfiddle.net/Yfu2Y/1/

关于c# - 无法在现有页面中使用挖空模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20525317/

相关文章:

c# - 如何在 CheckBox 上设置 Checked 和 Enabled 属性?

c# - 通过mysql导出Gridview数据

c# - 如何使用ajax将枚举值传递给 Controller ​​?

c# - 在 C# (MVC2) 中从给定列表创建随机值列表

c# - LINQ使用C#问题

c# - 数组到字典

c# - 如何从嵌套在数组中的数组中更新项目

javascript - Selenium C# : Locate element on chart

asp.net - 在 ASP.NET MVC 3 中获取 ContentType

c# - 'System.Dynamic.DynamicObject' 不包含 'PropertyName' 的定义