2013-07-03 34 views
19

次のコードがあります。AngularJS Uncaught ReferenceError:コントローラがモジュールから定義されていません

var app = 
    angular. 
     module("myApp",[]). 
     config(function($routeProvider, $locationProvider) { 
      $routeProvider.when('/someplace', { 
       templateUrl: 'sometemplate.html', 
       controller: SomeControl 
      }); 
      // configure html5 to get links working on jsfiddle 
      $locationProvider.html5Mode(true); 
     }); 

app.controller('SomeControl', ...); 

私は

Uncaught ReferenceError: SomeControl is not defined from myApp 

次のエラーを取得するには、私がapp.controller( 'SomeControl'、...)構文を使用することができないというだけの問題ですか? $ routeProviderを使用している場合

function SomeControl(...) 
+2

の重複:http://stackoverflow.com/questions/11211999/using-angular-controllers-created-with-angular-module-controller –

+0

ありがとう@KarlZilles - 私は検索が、逃しましたそれです。 –

答えて

39

使用引用符::FooのLが言ったように

  controller: 'SomeControl' 
+2

DUH、私の小さな間違いを見つけてくれてありがとう;) –

+0

:)簡単にエラーを作る –

6

は、あなたがSomeControlの前後に引用符を置く必要がある唯一の作業構文は次のとおりです。引用符を使用しない場合は、変数SomeControlを参照しています。コントローラを表すために名前付き関数を使用していないため、未定義です。

前述した代替手段、function SomeControl(...)を使用する場合は、その名前付き関数を定義します。それ以外の場合、AngularはmyAppモジュール内のコントローラをルックアップする必要があることを知る必要があります。

app.controller('SomeControl', ...)の構文を使用すると、グローバル名前空間が汚染されないため、より効果的です。

1

上記の答えはしかし正しいも、このエラーが発生する可能性があります:

  1. あなたのコントローラの名前HTMLやJSPなどのページが

<div ng-controller="yourControllerName as vm">

実際cotnrollerに一致していない場合
  1. また、ファンクションコントローラの名前がコントローラ定義と一致しない場合、このエラーも発生する可能性があります。

angular.module('smart.admin.vip') .controller('yourController', yourController); function yourController($scope, gridSelections, gridCreationService, adminVipService) { var vm = this; activate();

関連する問題