List.JS - 无法读取未定义的 属性 'childNodes'

List.JS - Cannot read property 'childNodes' of undefined

我好像想不通。我已经尝试过 $(document).ready 但仍然对我不起作用。我还尝试专门为这两个值名称制作一个 for 循环,以将结果保存到 var 并以这种方式传递。我还尝试将带有 class 的输入和带搜索的 id 放在父 div 的内部和外部。本质上就像在导航栏中一样。使用 list.js & knockout.js 顺便说一句。我使用四方 api.

使用 ajax 请求获取场地

JS:

        var options = {
        valueNames: ['name', 'category']
    };

    var userList = new List('search', options);

HTML:

<body>
<nav>
    <h1 class="formattedH1">Downtown SA,TX</h1>
    <span>
      <input type="search" placeholder="Search" class="search" id="search">
      <input type="button" class="sort searchButton" value="List"></input>
    </span>
</nav>
<div id="map" class="map"></div>
<div class="list">
    <input type="search" placeholder="Search" class="search" id="search">
    <h1>My Top 5</h1>
    <!-- Square card -->
    <div class="card" id="favViewModel" data-bind="foreach: favList">
        <div class="expand">
            <h2 class="venueName" data-bind="text:name"></h2>
        </div>
        <div class="cardSupport" data-bind="attr: {src: image()}">
        </div>
        <div class="cardSupport" data-bind="text:address">
        </div>
        <a data-bind="attr: {href: website()}">Website</a>
    </div>
    <h1>Foursquare Recommended</h1>
    <div class="card" id="recViewModel" data-bind="foreach: recommendedSpotList  ">
        <div class="expand">
            <h2 class="venueName" data-bind="text:name"></h2>
        </div>
        <div class="cardSupport" data-bind="text:location">
        </div>
        <div class="cardSupport" data-bind="text:category">
        </div>
        <div class="cardSupport" data-bind="text:rating">
        </div>
    </div>
    <script src="js/tester123.js"></script>

我在浏览其他类似项目时找到了我的答案,现在很简单。认为它可能会帮助某人,以防他们 运行 跨过这一步。这是因为我正在进行 ajax 调用,所以我不得不将对 ko.applybindings 的调用放在 ajax 请求中。绑定超出范围,如果您考虑它是有道理的,尤其是在您的请求失败的情况下。为什么还要尝试绑定请求的值。 HTML 如上,对于 JS ajax 请求请看下面:

JS:

$.ajax({
    url: 'https://api.foursquare.com/v2/venues/explore',
    dataType: 'json',
    data: 'data',
    async: true,
    success: function(data) {

        venues = data['response']['groups'][0]['items'];

        //This is where I had to place the binding to get it to render properly.
        ko.applyBindings(new recommendedViewModel(), document.getElementById('recViewModel'));

    },
    error: function() {
        alert("An error occurred.");
    }
});

我在项目的 github 页面上用一些评论解决了同样的问题,只要确保与示例的名称相同就可以了,一切都必须在 <div> 并且 ul 必须有 class list

像这样

<div id="hacker-list">
   <ul class="list"></ul>
</div>

Link: https://github.com/javve/list.js/issues/9