【发布时间】:2015-10-21 15:48:02
【问题描述】:
我之前也问过类似的问题,但两种解决方案都没有用。
我目前有一个使用 AngularJS 构建的商店应用程序,我的问题是,我需要能够单击一个项目并打开“项目”视图并仅显示存储在项目数组中的具有匹配 ID 的信息一个服务。
例如。商店视图上显示的第一个项目的 id 为 1,商店上显示产品名称等。单击时,项目将打开项目视图以仅显示该产品及其信息。
这是我的商店控制器:
'use strict';
angular.module('angularStoreApp')
.controller('storeCtrl', function($scope, StoreService){
$scope.items = StoreService.items();
});
服务(缩短以节省备用,还有 12 项其他项目)。
'use strict';
angular.module('angularStoreApp')
.service("StoreService", function() {
var items = [ {
itemId: 1,
qty: 0,
stock: 5,
price: 99.00,
name: 'Almond Toe Court Shoes, Patent Black',
category: 'Womens Footerwear'
},
{
qty: 0,
stock: 4,
price: 42.00,
name: 'Suede Shoes, Blue',
category: 'Womens Footerwear'
}];
this.items = function() {
return items;
};
});
商店视图
<!-- Start of item iteration -->
<div ng-repeat="item in items">
<!-- Start of item -->
<div class="item">
<div class="item_info">
<img src="http://i.imgur.com/Bn1iB6X.jpg"/>
<div class="item_footer">
<div class="info_text">
<h2>{{item.name| limitTo: 8}}...</h2>
<span>{{item.price | currency}}</span>
</div>
<div class="icon">
<a ng-href="#"><button role="button">More</button></a>
</div>
</div>
</div>
</div>
<!-- End of item -->
</div>
<!-- End of item iteration-->
项目控制
'use strict';
angular.module('angularStoreApp')
.controller('itemCtrl', function ($scope, StoreService) {
$scope.items = StoreService.items();
});
项目视图
<div ng-include="'components/navbar/navbar.html'"></div>
<div ng-repreat="item in items">
<div class="item-page-container">
<div class="item-p-img">
{{item.name}}
</div>
<div class="item-p-tab-Container">
<ul>
<li><a href="#">{{item.name}}</a></li>
<li><a href="#"></a></li>
<li><a href="#"></a></li>
</ul>
</div>
</div>
</div>
请询问更多代码或更方便查看,请参阅我的Github Repo
请说清楚函数,随意放入plunker,我的Javascript技能来自Angular,但是我以前没有搜索过这样的数组。我需要一个很好的解决方案,我可以转移/学习逻辑。
【问题讨论】:
-
几个问题比利,在您的项目视图中,您为什么要遍历所有项目?并在您的项目 ctrl 中再次遍历所有项目?
-
嗨 Jax,感谢您的回复。我还是新手,但是如果没有在项目视图中迭代 ng-repeat,如果我手动指定一个项目,数据将不会显示。如果我做错了,一定要告诉我一个更好的方法。 :)
-
@BillyPurvis,你能提供plunkr你有什么吗?
-
由于某种原因,我似乎无法让 plunkr 工作,这不是我以前经常使用的东西。
-
@BillyPurvis :您可以再提供一项服务吗?根据 id 获取数据。这样您就可以在您的详细信息页面中调用此新服务
标签: javascript html arrays angularjs