Javascript 如何调试敲除中的模板绑定?

Javascript 如何调试敲除中的模板绑定?,javascript,knockout.js,typescript,Javascript,Knockout.js,Typescript,我在模板中有一系列模板。我将只放一些更接近问题的代码,因为其他部分似乎工作正常 框架模板: <script type="text/html" id="frame"> <fieldset class='frame'> <legend data-bind="text: label"></legend> <!-- ko foreach: { data: children, as: 'child' } --&g

我在模板中有一系列模板。我将只放一些更接近问题的代码,因为其他部分似乎工作正常

框架模板:

<script type="text/html" id="frame">
    <fieldset class='frame'>
        <legend data-bind="text: label"></legend>
        <!-- ko foreach: { data: children, as: 'child' } -->
        <!-- ko template: {name: child.controlType } -->
        <!-- /ko -->
        <!-- /ko -->
    </fieldset>
</script>
<script type="text/html" id="table">
    <div class="form-group">
        <div class="tableAction">
            <a class="btn btn-default glyphicon glyphicon-plus-sign" data-bind="click: action"></a> <span data-bind="text: label"></span>
        </div>
        <div class="table-responsive">
            <table class="table table-condensed">
                <tr>
                    <th style="text-align: center">
                        #
                    </th>
                    <!-- ko foreach: {data: $data.rowTemplate().children, as: 'column' } -->
                    <th>
                        <span data-bind="text: label"></span>
                    </th>
                    <!-- /ko -->
                </tr>
                <!-- ko foreach: { data: rows, as: 'row' } -->
                <tr>
                    <td>
                        <span class="glyphicon glyphicon-asterisk"></span>
                    </td>
                    <!-- ko foreach: { data: row, as: 'item' } -->
                    <td>
                        <span data-bind="text: item"></span>
                    </td>
                    <!-- /ko -->
                </tr>
                <!-- /ko -->
            </table>
        </div>
    </div>
</script>
我尝试了多种方法来移动表中的内容,将名称列更改为根本不使用它或作为column.label(带括号或不带括号),并通过在向集合添加控件的位置放置断点来验证内容,它确实包含一个表,每个元素都有一个标签集,它还生成结果页面中的元素。 所以所有的东西都在那里,但是标签没有打印出来

编辑:

在提出建议后,我尝试了以下方法:

<span data-bind="text: $data.label, attr: { title: 'DATA', value: JSON.stringify($data.rowTemplate) }"></span>
以及:

只有第二个会产生结果,但有趣的是,它不会显示rowTemplate的数据,尽管它确实存在。
控件列表中有各种各样的控件,它们使用上面定义的一个类,特别引起麻烦的是TableControl,类型的装箱隐藏了属性。不确定在那里做什么

你可以使用google chrome inspector。在javascript文件上使用调试器保留字放置一些断点,然后使用选项“跳过”查看代码中破坏应用程序的位置:
绑定失败主要分为以下几类:

范围相关 语法错误 属性引用无效,因为将包含具有该属性的对象的可观察对象尚未初始化 使用binding为参与绑定的所有内容设置标题属性,如下所示:

data-binding="attr: { title: 'anything you like, really' }, value:... }"

运行应用程序,然后将鼠标悬停在绑定元素上,检查绑定元素,找出绑定停止的位置。这会让你很好地了解你的加价有哪些部分被破坏。

似乎是继承导致了整个事情的失败。唉,我没有使用typescript的经验,所以我也无能为力,但我还有另一个观察,尝试使用在线模板,因为命名模板存在故障。
/// <reference path="../typings/knockout/knockout.d.ts" />

import ko = require("knockout");
import Control = require("Models/Control");

class TableRowControl extends Control {
    constructor(id: any, ref: any, index: number, label: any, min: any, max: any, value: any, maxLength: any, columnCount: any, rowCount: any, column: any, row: any, css: any, controlType: any, valueObj: any, isEditable: boolean, xml: any) {
        super(id, ref, index, label, min, max, value, maxLength, columnCount, rowCount, column, row, css, controlType, valueObj, isEditable, xml);

    }
}

export = TableRowControl; 
class ConfigurationItemDetailBlade extends BladeBase {
    item: KnockoutObservable<any>;
    controls: KnockoutObservableArray<any>;

    someMethod() {
        this.controls.removeAll()

        for (var j = 0; j < item.children().length; j++) {
            var control = item.children[j];
            this.controls.push(control);
        }
    }
}
<pre data-bind="text: JSON.stringify(ko.toJS($data), null, 2)"></pre>
<pre data-bind="text: JSON.stringify(ko.toJS($parent), null, 2)"></pre>
0x80004005 - JavaScript runtime error: Unspecified error.
<span data-bind="text: $data.label, attr: { title: 'DATA', value: JSON.stringify($data.rowTemplate) }"></span>
<span data-bind="text: $data.label, attr: { title: 'DATA', value: JSON.stringify($data) }"></span>
data-binding="attr: { title: 'anything you like, really' }, value:... }"