我想创建一个类似这样的应用:https://ionic-songhop.herokuapp.com
正如您所看到的,当我们点击收藏夹按钮时,该项目将存储在工厂中,我们可以在另一页面(最喜欢的页面)中调用
在我的情况下:我使用服务来存储商品数据并创建工厂来存储推送的商品。
这是我的代码:(我将数据存储在服务中)
.service('dataService',function(){
var service=this;
this.playerlist = [
{ name: 'Leonel Messi', ava:"https://i.scdn.co/image/d1f58701179fe768cff26a77a46c56f291343d68" },
{ name: 'Cristiano Ronaldo', ava:"https://i.scdn.co/image/d1f58701179fe768cff26a77a46c56f291343d68" },
{ name: 'Zlatan Ibrahimovic', ava:"https://i.scdn.co/image/d1f58701179fe768cff26a77a46c56f291343d68" },
{ name: 'Wayne Rooney', ava:"https://i.scdn.co/image/d1f58701179fe768cff26a77a46c56f291343d68" },
{ name: 'Michael Carrick', ava:"https://i.scdn.co/image/d1f58701179fe768cff26a77a46c56f291343d68" },
{ name: 'Phil Jones', ava:"https://pbs.twimg.com/profile_images/473469725981155329/E24vfxa3_400x400.jpeg" },
{ name: 'Angel di Maria', ava:"https://i.scdn.co/image/d1f58701179fe768cff26a77a46c56f291343d68" }
];
})
.factory('User', function() {
var play = { favorites: []}
play.addToFavorites = function(song) {
play.favorites.unshift(song);
}
play.removeFromFavorites = function(player, index) {
play.favorites.splice(index, 1);
}
return play;
})
控制器:
.controller('ChooseTabCtrl', function($scope, dataService, User) {
$scope.dataService=dataService;
$scope.addToFavorite = function (item) {
User.favorites.unshift(dataService.playerList.indexOf(), 1);
}
})
但是当我点击每个项目上的收藏夹按钮时,列表不会显示在收藏页面中。 在Ionic应用程序中可以这样做吗?
答案 0 :(得分:0)
代码中的代码存在一些问题......
在播放器对象实际为playerlist
(全部小写)时,您在控制器中引用User.favorites.unshift(dataService.playerlist.indexOf(item));
// remove the `, 1` otherwise you'll be adding a `1` to the array everytime
。另外,我假设您希望实际获得indexOf播放器,以便该行需要更改为:
// wrong
ng-click="addToFavorite(item)"
// right
ng-click="addToFavorite(player)"
并且在您看来,您需要更改以下内容:
ListTabCtrl
接下来,在$scope.players=dataService;
// to
$scope.players=dataService.playerlist;
更改以下内容:
<ion-item ng-repeat="player in favorites" class="item item-avatar" href="#">
<img ng-src="{{players[player].ava}}">
<h2>{{players[player].name}}</h2>
<p>Back off, man. I'm a scientist.</p>
<ion-option-button class="button-assertive" ng-click="removePlayer(player, $index)">
<i class="ion-minus-circled"></i>
</ion-option-button>
</ion-item>
然后在视图中:
{{1}}
我在jsbin上发布了一个代码的工作示例:Machine Learning