簡體   English   中英

未定義“角度”(腳本未鏈接在一起)

[英]'angular' is not defined (scripts not linking together)

我正在嘗試使我的第一個真正的MEAN堆棧正常工作,因此這可能是菜鳥的錯誤。

為什么app.js中的angular模塊和controllers.js中的函數仍未定義(未定義“ Angular”,未定義“ PollListCtrl”,等等)

提前謝謝了!

這是index.jade

extends layout

doctype html

html(lang='en', ng-app='polls')
block content
    p Welcome to #{title}
    head
        meta(charset='utf-8')
        meta(name='viewport', content='width=device-width, initial-scale=1, user-scalable=no')
        title= title
        script(src='https://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.js')
        script(src='//ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular-resource.js')
        script(src='/public/js/controllers.js')
        link(rel='stylesheet', href='//netdna.bootstrapcdn.com/bootstrap/3.0.1/css/bootstrap.css')
        link(rel='stylesheet', href='/stylesheets/style.css')
        script(src='/public/js/services.js')
        script(src='/public/js/app.js')
    body(ng-controller='PollListCtrl')
        nav.navbar.navbar-inverse.navbar-fixed-top(role='navigation')
            div.navbar-header
                a.navbar-brand(href='#/poll')= title
            div.container
                div(ng-view)

和controller.js的第一行

    function PollListCtrl($scope, Poll) {
      $scope.polls = Poll.query();
    }

...和app.js

angular.module('polls', ['pollServices']).config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/polls', { templateUrl: 'partials/list.html', controller: 
PollListCtrl }).when('/poll/:pollId', { templateUrl: 'partials/item.html', controller: 
PollItemCtrl }). when('/new', { templateUrl: 'partials/new.html', controller: 
PollNewCtrl }).otherwise({ redirectTo: '/polls' });
}]);

您這里需要解決一些問題。

  • 首先,您需要在angular.js之后但在可能使用它的任何其他模塊之前引用您的app.js。
  • 其次,您的應用程序簽名未正確設置。 您需要將angular.module分配給變量,即: var polls = angular.module('polls', ...
  • 您的控制器簽名也不正確。 為了使控制器能夠訪問您應用程序的資源,需要在您的應用程序模塊上對其進行定義。 polls.controller('pollListCtrl', [$scope, function($scope) { ...

還要注意,控制器名稱通常不以大寫字母開頭。

希望可以使您更加穩固,但是我強烈建議閱讀Angular.js教程 ,以便對角度的工作方式有更好的了解。

編輯

如前所述,您可以跳過將應用程序分配給變量的操作,然后在連接控制器時完全引用該應用程序:

angular.module('polls').controller('pollListCtrl', [$scope, function($scope){
...

大多數示例將顯示第一種形式,但是許多人認為更明確的設計是一種更好的做法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM