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内部的