Javascript 显示对象列表';s包含重复项的子数组,使用ng repeat每个索引1个项目符号
我有一个对象(Javascript 显示对象列表';s包含重复项的子数组,使用ng repeat每个索引1个项目符号,javascript,html,angularjs,arrays,Javascript,Html,Angularjs,Arrays,我有一个对象(searchedMenu)包含3个长度相等的数组(name、short\u name和description) 如果我这样做: <ul> <li ng-repeat="item in narrow.searchedMenu"> {{item}}</li> </ul> <li ng-repeat="item in narrow.searchedMenu"> {{item.name}}, {{item.short_n
searchedMenu
)包含3个长度相等的数组(name
、short\u name
和description
)
如果我这样做:
<ul>
<li ng-repeat="item in narrow.searchedMenu"> {{item}}</li>
</ul>
<li ng-repeat="item in narrow.searchedMenu"> {{item.name}}, {{item.short_name}}, {{item.description}}</li>
完整的控制器代码为(这是一项正在进行的脏活):
shoveritdowncontroller.$inject=['MenuSearchService'];
函数NerrowItDownController(菜单搜索服务){
var菜单=这个;
var promise=MenuSearchService.getMatchedMenuItems();
var item_name=[“”,“”];
var描述;
var searchValue=“吨”;
函数包含过滤器(值){
返回值.indexOf(searchValue)!=-1;
}
承诺。然后(功能(响应){
menu.results=response.data;
menu.results=menu.results.menu_项;
description=response.data;
description=description.menu\u项;
控制台日志(描述);
var searchedMenu={};
searchedMenu.name=[];
searchedMenu.short_name=[];
searchedMenu.description=[];
对于(var i=0;i如果您不需要将其拆分,您应该这样做
<ul>
<li ng-repeat="item in description"> {{item.name}}, {{item.shortName}},{{item.description}},</li>
</ul>
- {{item.name}、{{{item.shortName}、{{{item.description}
试试这个:
<ul>
<li ng-repeat="item in narrow.searchedMenu.name track by $index"> {{ item }}, {{ narrow.searchedMenu.short_name[$index] }}, {{ narrow.searchedMenu.description[$index] }}</li>
</ul>
- {{{item},{{{窄.searchedMenu.short_name[$index]},{{{窄.searchedMenu.description[$index]}
searchedMenu
对象包含三个数组,因此您可以循环其中一个数组,并在循环的每个步骤中,使用$index
从其他数组中提取元素
AngularJS不允许ng repeat指令中存在重复项,因此您必须在控制器中的中继器中添加track by$index
:
menu.searchedMenu = description;
在模板中:
<ul>
<li ng-repeat="item in searchedMenu"> {{item.name}}, {{item.shortName}},{{item.description}},</li>
</ul>
- {{item.name}、{{{item.shortName}、{{item.description}
首先,我认为对于isla没有必要,因为零件数据和菜单中的键值都相同,所以我建议只执行最后一部分,即menu.searchedMenu=searchedMenu;然后将右侧的searchedMenu更改为您的描述,第二个ir是控制器内部的左侧部分将menu更改为此变量能够并在ng重复放置中:
{{item.name}、{{{item.short{u name}、{{item.description}
它应该可以工作你的角度控制器代码在哪里?也可以给我们看一下狭窄的console.log。searchedMenu@FerasSalim第一个代码块是控制器代码的关键部分,但我可以添加更多代码,没问题。请给我10秒钟。@defaultcheckbox确保它显示Object{name:Array[219],short_name:Array[219],description:Array[219]}
为什么需要在3个数组中转换description
数组。可以使用ng repeat=“description中的项”
并与项目.名称
,项目.短名称
和项目.说明
绑定,这不会导致在我的浏览器中显示任何内容您的数据结构是什么?您能举个例子吗?确保对象在您的答案中包含这3个数组。如果您想查看原始数据,它在这里:这看起来很好控制台,但浏览器中没有显示任何内容。可能是因为控制器的语法(即窄
?)起作用了!!!!:-)谢谢,太棒了。我从来都不知道跟踪方式。
NarrowItDownController.$inject = ['MenuSearchService'];
function NarrowItDownController(MenuSearchService) {
var menu = this;
var promise = MenuSearchService.getMatchedMenuItems();
var item_name = ["",""];
var description;
var searchValue = "ton";
function containsFilter(value) {
return value.indexOf(searchValue) !== -1;
}
promise.then(function (response) {
menu.results = response.data;
menu.results = menu.results.menu_items;
description = response.data;
description = description.menu_items;
console.log(description);
var searchedMenu = {};
searchedMenu.name = [];
searchedMenu.short_name = [];
searchedMenu.description = [];
for(var i=0;i<description.length;i++){
searchedMenu.name[i] = description[i].name;
searchedMenu.short_name[i] = description[i].short_name;
searchedMenu.description[i] = description[i].description;
}
console.log(searchedMenu);
menu.searchedMenu = searchedMenu;//description.filter(containsFilter);
console.log("Searched menu: ", menu.searchedMenu);
})
.catch(function (error) {
console.log("Something went terribly wrong.");
});
menu.logMenuItems = function (searchTerm) {
var promise = MenuSearchService.getMatchedMenuItems(searchTerm);
promise.then(function (response) {
console.log(response.data);
})
.catch(function (error) {
console.log(error);
})
};
}
<ul>
<li ng-repeat="item in description"> {{item.name}}, {{item.shortName}},{{item.description}},</li>
</ul>
<ul>
<li ng-repeat="item in narrow.searchedMenu.name track by $index"> {{ item }}, {{ narrow.searchedMenu.short_name[$index] }}, {{ narrow.searchedMenu.description[$index] }}</li>
</ul>
menu.searchedMenu = description;
<ul>
<li ng-repeat="item in searchedMenu"> {{item.name}}, {{item.shortName}},{{item.description}},</li>
</ul>