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>
我好像想不通。我已经尝试过 $(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>