Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 显示对象列表';s包含重复项的子数组,使用ng repeat每个索引1个项目符号_Javascript_Html_Angularjs_Arrays - Fatal编程技术网

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>