Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Angularjs 在ng repeat中选择和访问项目_Angularjs_Filter_Angularjs Ng Repeat_Ng Repeat - Fatal编程技术网

Angularjs 在ng repeat中选择和访问项目

Angularjs 在ng repeat中选择和访问项目,angularjs,filter,angularjs-ng-repeat,ng-repeat,Angularjs,Filter,Angularjs Ng Repeat,Ng Repeat,我在服务中有一个对象数组,我想在这样的视图中显示它 <li ng-repeat="item in filteredItems = (resource.items | filter:multipleFilters..."> <span class="title">{{item.escaped_name}}</span> </li>

我在服务中有一个对象数组,我想在这样的视图中显示它

<li ng-repeat="item in filteredItems = (resource.items | filter:multipleFilters...">
    <span class="title">{{item.escaped_name}}</span>
</li>
  • 我希望这些对象是可选择的,这是最简单的部分。然后我需要获得所选项目的计数,并能够迭代所有项目以处理/更改数据

    保存和访问所选项目的最佳方法是什么


    请注意,所选项目可能会更改,例如,所选项目可能会因过滤器更改而丢失。此外,我不想直接在数组中的对象上设置所选属性-对象数组位于服务中,并在应用程序中的许多列表中使用,我不想“清理”每个视图的选定属性。

    您可以采用面向对象的方法,创建模型来基本上为您完成工作。我也经历过同样的情况,它对我有效,而且我认为它是angular为您提供的一个很好的工具。您将有一个listModel和一个itemModel-列表模型将有一个单一视图的列表item itemModels。在使用此项目列表时,您将在其中使用一个实例的列表模型。请恕我直言,因为这只是一个示例

    所以你会有一个列表模型

    .factory('listModel', [singleItemModelInject,
    function(singleItemModel) {
    
        function listModel(items) {
            this.items = _.map(items, listModel.create);
        }
    
        listModel.create = function(value, name) {
            return new listModel(value);
        };
    
        listModel.prototype = {
            get whatever() {
    
            },
            set whatever() {
    
            }
        }
    
        return listModel;
    }
    ]);
    
    请注意,它注入了
    singleItemModel
    ——这将是单个项目模型,它看起来是一样的,只是它将包含您在创建时的所有信息以及您传递它的方式

    .factory('singleItemModel', [whateverYouNeedInjected,
    function() {
    
       function singleItemModel(item) {
        this.name = item.name;
        //default to not selected
        this.selected = item.selected || false;
        this.whateverElseYouNeed = item.whateverElseYouNeed
      } 
    
      singleItemModel.create = function(value) {
        return new singleItemModel(value);
      };
    
    因此,您将拥有一个将在整个应用程序中使用的
    listModel
    实例,您可以使用任何属性切换隐藏或显示,只要您有要访问的属性的setter和getter(如名称和isSelected或任何您想要的)并对其进行双向绑定,如果将其更改为“任意选定”,则由于您使用的是单个实例,因此它是通用的


    如果您不希望选定的值在整个应用程序中持续存在,并且仅在该页面(或您使用它的任何地方)中,您也可以创建单个实例。

    我通常包括一个
    ng click
    标记:

    <li ng-repeat="item in ..." ng-click="select_item(item)">
    

  • 传递给
    select\u item()
    项目将是用户选择的项目。

    您所说的可选是什么意思?同时拥有选定的属性将使您的生活更轻松。在我看来,您应该制作一个模型(提供商)为此,您可以使用toJSON或其他工具来清理发送/接收。Angular对于前端模型非常有用。您想要构建面包屑、导航和结果集,我在knockout中做了一个,还没有在Angular中,但这不是一个简单的函数,这是一个系统,您尝试过什么?您需要构建一个过滤器添加/删除筛选器时的列表、标记列表、结果列表和生成事件。我的意思是单击它以选择它。向每个项目添加选定属性的问题是,该列表可以在同一站点上使用两次。resource.items中的全部数据来自服务,即使我在项目上有选定属性,如果选择如果已筛选出项目,我将如何检测该更改并将“选定”设置为false?对选择组使用一个模型,然后对单个项目本身使用一个列表模型实例。这将解决您的问题。@LucLaverdure面包屑和导航向导?我只想有一个项目列表(或其ID或某些参考)都是选定的和filteredItems内部的