敲除:可观察数组没有被正确绑定——只有1个结果显示,而api返回6
knockout: observable array not getting binded properly - only 1 result being shown while api returns 6
Html代码,具有敲除结合
$(document).on('click', 'div.toggleCarousel', function () {
D_usedSearch.similarCarsCarousel.showCarousel($(this));
});
showCarousel: function (toggleBtn) {
var carouselMain = toggleBtn.parent().find('div.similarCarCarousel');
var carouselList = carouselMain.find('li');
$.ajax({
url: '/webapi/profileRecommendations/',
type: 'GET',
data: 'profileId=' + toggleBtn.parents('li').find('a').eq(3).attr('profileid'),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
beforeSend: function (xhr) { xhr.setRequestHeader('sourceid', '1'); },
success: function (response) {
D_usedSearch.similarCarListings(response);
}
});
});
}
similarCarListings:ko.obsobservableArray([])
api返回6个对象,但在ui中只显示了一个。
有人能告诉我哪里错了吗?我是淘汰赛新手?我需要装订还是做其他事情?
在HTML中,您已经编写了以下数据绑定:
foreach: D_usedSearch.similarCarListings
此数据绑定之后的<li>
充当模板,敲除使用该模板为名为similarCarListings
的数组中的每个项呈现列表项。
Knockout不会触摸HTML,直到您通过调用ko.applyBindings
告诉它这样做。此方法至少需要一个参数:"Viewmodel",它包含渲染UI所需的所有信息。
您编写的数据绑定至少需要以下视图模型(VM)才能工作:
var vm = {
D_usedSearch: {
similarCarListings: ko.observableArray([])
}
};
ko.applyBindings(vm);
在success
处理程序中,您为可观察阵列提供了新项目:
success: function (response) {
vm.D_usedSearch.similarCarListings(response);
}
如果这有帮助,请告诉我。如果你还没有应用绑定,你可能会遇到一些错误。。。
这是一个淘汰赛的例子,没有所有与淘汰赛无关的东西:
var exampleServerData = [{
ProfileId: "0",
CarName: "Car Name 0",
OriginalImgPath: "http://img.carwale.com/used/no-cars.jpg",
Price: "1000$",
Url: "http://stackoverflow.com",
Km: "40000",
Fuel: "LPG",
MakeYear: "2000",
AreaName: "Area 0",
CityName: "City 0"
}, {
ProfileId: "1",
CarName: "Car Name 1",
OriginalImgPath: "http://img.carwale.com/used/no-cars.jpg",
Price: "2000$",
Url: "http://stackoverflow.com",
Km: "30000",
Fuel: "LPG",
MakeYear: "1000",
AreaName: "Area 1",
CityName: "City 1"
}];
var vm = {
D_usedSearch: {
similarCarListings: ko.observableArray([])
}
};
ko.applyBindings(vm);
// This goes in your success callback
vm.D_usedSearch.similarCarListings(exampleServerData);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<ul data-bind="foreach: D_usedSearch.similarCarListings">
<li data-bind="attr: { id: 'SimilarListing-' + $index() }">
<img data-bind="attr: {
profileId: ProfileId,
alt: CarName, title: CarName,
'src': OriginalImgPath }">
<div data-bind="text: Price"></div>
<a data-bind="attr: { href: Url }, text: CarName"></a>
<p>
<span data-bind="text: Km + ' km'"></span>
<span data-bind="text: Fuel"></span>
<span data-bind="text: MakeYear"></span>
</p>
<p>
<span data-bind="text: AreaName"></span>
<span data-bind="text: CityName"></span>
</p>
</li>
相关文章:
- JQuery:向多个匹配结果添加换行符的最简单方法
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- Jquery - 将我的两个类相乘没有结果
- If语句只执行第一个条件并运行其他条件,但没有结果
- 与网络界面相比,谷歌搜索API有时会重复第一个结果,有时会重复第二个结果
- 仅在第一个结果中显示/隐藏MySQL结果函数
- JavaScript-将for循环的多个结果推送到数组中
- 敲除:可观察数组没有被正确绑定——只有1个结果显示,而api返回6
- 无限滚动在IE中返回多个结果
- 承诺,如果第一个失败,则返回第二个承诺结果
- 在数据库(JSP PAGE)中获取多个复选框结果
- 如何在三元运算的结果上执行多个函数
- Javascript:拆分字符串,但仅使用 1 个结果
- 第二个Ajax调用已经填充了成功结果
- 有没有一个简单的解决方案可以根据3个数据找到结果
- for循环中的多个随机结果
- 当至少有20个搜索结果时,只呈现10个搜索结果?使用Google Places API
- jQuery无法处理ng个重复结果
- Jquery 优化表的结果:两个或多个逻辑语句