Javascript 敲除js内置变量($data)

Javascript 敲除js内置变量($data),javascript,knockout.js,Javascript,Knockout.js,我知道,$data变量提供对您上下文中当前对象的访问。 我还可以使用foreach绑定并将属性名添加到books对象 这段代码迭代名为books的数组,结果显示在DOM中作为项目列表 但是,如果我将该数组名称从books更改为任何其他名称,它将不显示项目 使用KnockoutJS进行数据绑定 var ViewModel=函数(){ var self=这个; self.books=[ “地球之旅”, “有效的学习计划” ]; }; var myModel=new ViewModel();

我知道,$data变量提供对您上下文中当前对象的访问。 我还可以使用foreach绑定并将属性名添加到books对象


这段代码迭代名为books的数组,结果显示在DOM中作为项目列表

但是,如果我将该数组名称从books更改为任何其他名称,它将不显示项目


使用KnockoutJS进行数据绑定
var ViewModel=函数(){ var self=这个; self.books=[ “地球之旅”, “有效的学习计划” ]; }; var myModel=new ViewModel(); ko.应用绑定(myModel);
以下是将数组名称更改为标题后导致错误的代码

<!DOCTYPE html>
<html>
<head>
    <title>Data Binding with KnockoutJS</title>
</head>
<body>

    <ul >
        <li data-bind="text: $data"></li>
    </ul>

    <script type='text/javascript' src='knockout-3.4.2.js'></script>
    <script>
        var ViewModel = function() {
            var self = this;

            self.titles= [
                'Journy to the earth',
                'effective study plans'

            ];
        };
        ko.applyBindings(ViewModel);
    </script>
</body>
</html>

使用KnockoutJS进行数据绑定
var ViewModel=函数(){ var self=这个; self.titles=[ “地球之旅”, “有效的学习计划” ]; }; 应用绑定(视图模型);
问题在于更改变量名时忽略了foreach部分:

<ul >
<!-- ko foreach: books -->
    <li data-bind="text: $data"></li>
<!-- /ko -->
</ul>
你改成

<ul >
    <li data-bind="text: $data"></li>
</ul>
<ul >
<!-- ko foreach: titles -->
    <li data-bind="text: $data"></li>
<!-- /ko -->
</ul>
但应该改成

<ul >
    <li data-bind="text: $data"></li>
</ul>
<ul >
<!-- ko foreach: titles -->
    <li data-bind="text: $data"></li>
<!-- /ko -->
</ul>

请注意,我更改了foreach指令以使用新的变量名。

请显示不起作用的代码。@Salketer添加了itthanks@Salketer。我认为这只是注释,对代码执行没有影响。它们确实是“just”html注释,但它们被knockout使用。我在哪里可以找到这些注释是如何被knockout操纵的?请参见指令开头的“ko”和结尾的“/ko”