我已经看过关于这个问题的几个问题,对于我的一生,我无法弄清楚这个问题。我没有使用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

10-05 20:31