gpt4 book ai didi

javascript - AngularJS - 错误 : [$injector:pget] Provider 'function ()' must define $get factory method

转载 作者:行者123 更新时间:2023-11-30 05:32:06 27 4
gpt4 key购买 nike

我是 AngularJS 的新手。我正在做 Adam Freeman 的 Pro AngularJS 书中的一个例子,但遇到了这个错误。

Error: [$injector:pget] Provider 'function ()' must define $get factory method. 

我正处于必须创建购物车小部件和摘要部分 View 的地步。当 AngularJS 试图加载 Cart 模块时抛出上述错误。

这是来自 Chrome 开发者工具的部分错误消息。作者此时没有提及任何有关 $get 函数或提供程序的信息。不知道我做错了什么。请帮忙。

Uncaught Error: [$injector:modulerr] Failed to instantiate module sportsStore due to:
Error: [$injector:modulerr] Failed to instantiate module cart due to:
Error: [$injector:pget] Provider 'function ()' must define $get factory method.
http://errors.angularjs.org/1.2.23/$injector/pget?p0=function%20()

购物车小部件代码。

angular.module("cart", [])
.factory( function() {

var cartData = [];

return {

addProduct: function (id, name, price) {
var addedToExistingItem = false;
for (var i = 0; i < cartData.length; i++) {
if (cartData[i].id == id) {
cartData[i].count++;
addedToExistingItem = true;
break;
}
}
if (!addedToExistingItem) {
cartData.push({
count: 1, id: id, price: price, name: name
});
}
},

removeProduct: function (id) {
for (var i = 0; i < cartData.length; i++) {
if (cartData[i].id == id) {
cartData.splice(i, 1);
break;
}
}
},

getProducts: function () {
return cartData;
}
}
})
.directive("cartSummary", function (cart) {
return {
restrict: "E",
templateUrl: "components/cart/cartSummary.html",
controller: function ($scope) {

var cartData = cart.getProducts();

$scope.total = function () {
var total = 0;
for (var i = 0; i < cartData.length; i++) {
total += (cartData[i].price * cartData[i].count);
}
return total;
}

$scope.itemCount = function () {
var total = 0;
for (var i = 0; i < cartData.length; i++) {
total += cartData[i].count;
}
return total;
}
}
}
});

这是从 app.html 调用它的方式

<script>
angular.module("sportsStore", ["customFilters", "cart"]);
</script>
<script src="controllers/sportsStore.js"></script>
<script src="filters/customFilters.js"></script>
<script src="controllers/productListControllers.js"></script>
<script src="components/cart/cart.js"></script>

....

<body ng-controller="sportsStoreCtrl">
<div class="navbar navbar-inverse">
<a class="navbar-brand" href="#">SPORTS STORE</a>
<cart-summary />
</div>
<div class="alert alert-danger" ng-show="data.error">
Error ({{data.error.status}}). The product was not loaded.
<a href="/sportsstore/app.html" class="alert-link">Click here to try again</a>
</div>
<ng-include src="'views/productList.html'" />
</body>

SportsStore 模块代码..

angular.module("sportsStore")
.constant("dataUrl", "http://localhost:5500/products")
.controller("sportsStoreCtrl", function ($scope, $http, dataUrl) {

$scope.data = {}
$http.get(dataUrl)
.success(function (data) {
$scope.data.products = data;
})
.error( function (error) {
$scope.data.error = error;
});
});

最佳答案

你有没有在某处定义为“cart”的模块,当你试图定义一个工厂时,看起来在模块中引用“cart”可能有问题。如果您尝试引用您的主应用程序,请尝试类似的操作:

var main = angular.module("sportsStore", ['cart'])...

然后尝试定义您的购物车工厂:

main.factory('cart', function() {... cart factory code here...})

关于javascript - AngularJS - 错误 : [$injector:pget] Provider 'function ()' must define $get factory method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26286246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com