我已经看过关于这个问题的几个问题,对于我的一生,我无法弄清楚这个问题。我没有使用ng-route
,并且可以肯定它正在获取要尝试学习一些基本js的文件,因此我一直在做一些教程。一个抛出此错误:
未捕获的错误:[$ injector:modulerr] http://errors.angularjs.org/1.3.10/ $ injector / modulerr?p0 = gemStore&p1 = Error%... gleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.10%2Fangular.min.js%3A17%3A350)
已编辑
这是我的代码:
的HTML
//index.html
<!doctype html>
<html ng-app="gemStore">
<head>
<title>myTestApp</title>
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js"></script>
<script type="text/javascript" src="app.js" />
</head>
<body ng-controller="StoreController as store">
<div ng-repeat="product in store.products" ng-hide="store.product.soldOut">
<h1>{{store.product.name}}</h1>
<h1>{{store.product.price}}</h1>
<h1>{{store.product.desc}}</h1>
<button ng-show="store.product.canPurchase">Add To Cart</button>
</div>
</body>
</html>
Javascript:
var app = angular.module('gemStore', []);
app.controller('StoreController', function() {
this.products = gems;
});
var gems = [
{
name: 'Gem',
price: 2.95,
desc: '. . .',
canPurchase = false,
soldOut = true,
},
{
name: 'Gem2',
price: 3.95,
desc: '. . .',
canPurchase = false,
soldOut = true,
}
]
最佳答案
几个错误/建议:
我不知道div ng-controller="StoreController as store"
语法是否正确,但这不是必需的。您可以只写div ng-controller="StoreController"
您需要至少具有soldOut = true
的一种产品才能看到内容:)
您声明宝石的方式有误。声明对象文字的正确方法是var gem = {soldOut: true}
,而不是var gem = {soldOut = true}
。
您不需要使用IIFE包装Angular代码。 (IIFE是您使用(function() {....})();
编写的内容)
Angular控制器通过$scope
依赖项(您需要注入BTW)公开方法和对象。如果在控制器内部声明var
,然后尝试在HTML中访问它,则将无法执行。
(编辑)看看您的products
数组。最后一个键和值-> soldOut: false,
的末尾不需要逗号。
工作代码在这里:http://plnkr.co/edit/s2397TznhGii84vwSIFA?p=preview