Angular JS函数未定义错误

用户名

我正在从AngularJS.org视频教程中学习AngularJS,但运行代码时却说

错误:[ng:areq]参数'ReviewController'不是一个函数

我在控制台中未定义,但是我的代码与视频中的代码相同,这是我的html

<!doctype html>
<html ng-app="store">
<title>Testing AngularJS</title>
<head>
    <link rel="stylesheet" type="text/css" href="bootstrap.css"/>
    <script type="text/javascript" src="js/angular.js"></script>
    <script type="text/javascript" src="app.js"></script>
</head>
<body ng-controller="StoreController as store">
<ul class="list-group">
    <li class="list-group-item" ng-repeat="product in store.products">
        <h3>{{product.name}}
            <em class="pull-right">{{product.price | currency}}</em>
            <img class="gallery" ng-src="{{product.images[0].full}}"/>
        </h3>

        <section ng-controller="PanelController as panel">
            <ul class="nav nav-pills">
                <li ng-class="{active: panel.isSelected(1)}"><a href ng-click="panel.selectTab(1)">Description</a></li>
                <li ng-class="{active: panel.isSelected(2)}"><a href ng-click="panel.selectTab(2)">Specifications</a>
                </li>
                <li ng-class="{active: panel.isSelected(3)}"><a href ng-click="panel.selectTab(3)">Reviews</a></li>


            </ul>
            <div class="panel" ng-show="panel.isSelected(1)">
                <h3> Description</h3>

                <h4>{{product.description}}</h4>

            </div>
            <div class="panel" ng-show="panel.isSelected(2)">
                <h3> Specifications</h3>
                <blockquote>None yet</blockquote>

            </div>
            <div class="panel" ng-show="panel.isSelected(3)">

                <h3> Reviews</h3>

                <blockquote ng-repeat="review in product.reviews">
                    <b>Stars: {{review.stars}}</b>
                   <p>{{review.body}}</p>
                    <cite>_{{review.author}}</cite>
                </blockquote>
                <form name="reviewForm" ng-controller="ReviewController as reviewCtrl">
                    <blockquote>
                        <b>Stars: {{reviewCtrl.review.stars}}</b>
                        <p>{{reviewCtrl.review.body}}</p>
                        <cite>_{{reviewCtrl.review.author}}</cite>
                    </blockquote>
                    <label for="select">Select</label>
                    <select id="select" ng-model="reviewCtrl.review.stars">
                        <option  value="1">1 star</option>
                        <option value="2">2 star</option>
                        <option value="3">3 star</option>
                    </select>
                    <label for="comments"></label>
                    <textarea id="comments" ng-model="reviewCtrl.review.body"></textarea>
                    <label for="email">Email</label>

                    <input ng-model="reviewCtrl.review.author" type="email" id="email"/>
                    <input type="submit" value="Submit"/>

                </form>


            </div>
        </section>

    </li>


</ul>


</body>
</html>

这是我的app.js文件

(function () {

    var app = angular.module('store', []);
    app.controller('StoreController', function () {
        this.products = [
            {
                name: 'Cup',
                price: 2.95,
                description: 'It is the best Buy it fast',

                images: [
                    {
                        full: 'gem.jpeg'
                    }
                ],
                reviews: [
                    {
                        stars: 5,
                        body: 'This is the best gem',
                        author: '[email protected]'
                    },
                    {
                        stars: 1,
                        body: 'easily broken',
                        author: '[email protected]'
                    }
                ]

            },
            {
                name: 'Bottle',
                price: 1.12,
                description: 'It\'s the best bottle',

                images: [
                    {
                        full: 'gem.jpeg'
                    }
                ],
                reviews: [
                    {
                        stars: 2,
                        body: 'Latest gem',
                        author: '[email protected]'
                    }
                ]

            }
        ]; // product is the property of the controller
    });
    app.controller("ReviewController", function () {
        this.review = {};
    });

    app.controller("PanelController", function () {
        this.tab = 1;
        this.selectTab = function (setTab) {
            this.tab = setTab;

        };
        this.isSelected = function (checkTab) {
            return this.tab === checkTab;
        };
    });


})();
迈克尔·海斯(Michael Hays)

问题在这里:

<script type="text/javascript" src="js/angular.js"></script>
<script type="text/javascript" src="app.js"></script>

脚本按照在页面上遇到的顺序执行。所以angular.js跑之前app.js有机会执行之前,它将解析文档并尝试解决ng-app(从而解决ng-controllerapp.js

有两种简单的方法可以解决此问题:

app.js内嵌在你的文档的末尾

尽管我确实说过脚本是按照遇到的顺序执行的,但是angularjs将其初始化代码放在了后面document.isready它已加载,因此您可以访问angular.module,但是直到您自己的代码完成加载后,它才会执行其引导逻辑。该解决方案适用于小型项目,但是当代码变大时效果不佳。

手动引导您的应用程序

ng-app="store"从您的html代码中删除,然后在的末尾app.js,添加以下代码

angular.element(document).ready(function() {
  angular.bootstrap(document, ['store']);
});`

如果您使用角度足够长的时间,您将习惯第二种解决方案,因为它可以帮助我们很好地使用$ script,RequireJS等动态加载程序,更不用说您发布的示例了!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular js未定义的函数

来自分类Dev

Angular JS-错误:ng:areq错误的参数参数'GameContoller'不是函数,未定义

来自分类Dev

Angular JS&TypeScript-错误:ng:areq错误参数“参数'XXXXXX'不是函数,未定义”

来自分类Dev

angular-datatables错误-未定义不是函数

来自分类Dev

Angular.js服务函数未定义

来自分类Dev

如何清除Angular JS中的未定义错误?

来自分类Dev

错误$在Angular Universal中未定义

来自分类Dev

Angular-在事件侦听器函数内部调用服务函数返回未定义的错误

来自分类Dev

未定义Angular JS服务

来自分类Dev

Angular JS Factory变量未定义

来自分类Dev

如何使用Angular服务函数?抛出错误:“无法读取未定义的属性”

来自分类Dev

Angular Karma测试无法正常运行,给出错误“参数'fn'不是函数,未定义”

来自分类Dev

未定义函数:$ http.post(angular.js)中的.succes

来自分类Dev

Angular JS中带有Ng-Include的未定义函数

来自分类Dev

AngularJS:未捕获ReferenceError:未定义angular app.js:1(匿名函数):

来自分类Dev

Angular JS on Rails-参数'RaffleCtrl'不是一个函数,未定义

来自分类Dev

Angular 将 js 函数的值读取为未定义,即使对象具有值

来自分类Dev

如何解决cookiejs在Angular JS中未定义错误?

来自分类Dev

错误TypeError:“ this.canvas未定义” 用angular和chart.js创建图表的问题

来自分类Dev

我收到了angular.js:12520TypeError错误:无法读取未定义的属性'then'。

来自分类Dev

TypeError:未定义不是Angular Resource中的函数

来自分类Dev

TypeError-函数未定义-Angular 2

来自分类Dev

Angular $ resources的query(),“未定义不是函数”

来自分类Dev

Angular和Jasmine-$ scope函数未定义

来自分类Dev

无法使用angular-summernote summarnote函数未定义

来自分类Dev

TypeError:未定义不是函数-Angular Animate

来自分类Dev

TypeError-函数未定义-Angular 2

来自分类Dev

Angular Ajax,函数外部的未定义变量

来自分类Dev

Angular $ http错误响应statusText始终未定义

Related 相关文章

  1. 1

    Angular js未定义的函数

  2. 2

    Angular JS-错误:ng:areq错误的参数参数'GameContoller'不是函数,未定义

  3. 3

    Angular JS&TypeScript-错误:ng:areq错误参数“参数'XXXXXX'不是函数,未定义”

  4. 4

    angular-datatables错误-未定义不是函数

  5. 5

    Angular.js服务函数未定义

  6. 6

    如何清除Angular JS中的未定义错误?

  7. 7

    错误$在Angular Universal中未定义

  8. 8

    Angular-在事件侦听器函数内部调用服务函数返回未定义的错误

  9. 9

    未定义Angular JS服务

  10. 10

    Angular JS Factory变量未定义

  11. 11

    如何使用Angular服务函数?抛出错误:“无法读取未定义的属性”

  12. 12

    Angular Karma测试无法正常运行,给出错误“参数'fn'不是函数,未定义”

  13. 13

    未定义函数:$ http.post(angular.js)中的.succes

  14. 14

    Angular JS中带有Ng-Include的未定义函数

  15. 15

    AngularJS:未捕获ReferenceError:未定义angular app.js:1(匿名函数):

  16. 16

    Angular JS on Rails-参数'RaffleCtrl'不是一个函数,未定义

  17. 17

    Angular 将 js 函数的值读取为未定义,即使对象具有值

  18. 18

    如何解决cookiejs在Angular JS中未定义错误?

  19. 19

    错误TypeError:“ this.canvas未定义” 用angular和chart.js创建图表的问题

  20. 20

    我收到了angular.js:12520TypeError错误:无法读取未定义的属性'then'。

  21. 21

    TypeError:未定义不是Angular Resource中的函数

  22. 22

    TypeError-函数未定义-Angular 2

  23. 23

    Angular $ resources的query(),“未定义不是函数”

  24. 24

    Angular和Jasmine-$ scope函数未定义

  25. 25

    无法使用angular-summernote summarnote函数未定义

  26. 26

    TypeError:未定义不是函数-Angular Animate

  27. 27

    TypeError-函数未定义-Angular 2

  28. 28

    Angular Ajax,函数外部的未定义变量

  29. 29

    Angular $ http错误响应statusText始终未定义

热门标签

归档