【发布时间】:2016-04-05 17:44:30
【问题描述】:
我在尝试在控制器中传递服务时遇到了一点问题。
我想做的是一个购物车,我有一个商品列表,当我点击一个按钮时,这些商品会被添加到购物车中,然后我想在单独的页面中列出购物车中的这些商品使用单独的控制器,所以我试图为购物车使用工厂,但我不知道您是否可以在控制器中设置工厂对象。
这是我的代码,希望你能指出正确的方向。
var app = angular.module("Shop", []);
app.factory('DataService', function () {
var cart = [];
var set = function (data) {
cart = data;
}
var get = function () {
return cart;
}
});
app.controller("catalogController", function ($scope, $http) {
$scope.bookStore = {
selected: {},
books: null
};
$scope.cart = [];
$http.get("json/books.json")
.success(function (data) {
console.log(data);
$scope.bookStore.books = data;
})
.error(function (err) {
});
$scope.addToCart = function (book) {
var found = false;
$scope.cart.forEach(function (item) {
if (item.id === book.id) {
item.quantity++;
found = true;
}
});
if (!found) {
$scope.cart.push(angular.extend({
quantity: 1
}, book));
}
};
$scope.removeFromCart = function (item) {
var index = $scope.cart.indexOf(item);
$scope.cart.splice(index, 1);
};
$scope.getCartPrice = function () {
var total = 0;
$scope.cart.forEach(function (product) {
total += product.price * product.quantity;
});
return total;
};
});
app.controller("checkoutController", function ($scope, DataService) {
$scope.cart = DataService;
});
【问题讨论】:
标签: javascript angularjs service factory