9

この質問のバリエーションがすでに何度か尋ねられていることは知っていますが、他のOPに対していくつかの提案された解決策を試しましたが、これを解決できませんでした.いくつかの説明をいただければ幸いです.

基本的な平均 todo リスト アプリ ( http://www.mean.io/ ) を使用しています。単純なコントローラーを実装した後、「エラー: 引数 'nameOfMyController' は関数ではありません。定義されていません。」というエラーが表示されます。

私がいる場所は次のとおりです。

app.js (ボイラープレート)

window.app = angular.module('mean', ['ngCookies', 'ngResource', 'ui.bootstrap', 'ui.route', 'mean.system', 'mean.articles' ]);

angular.module('mean.system', []);
angular.module('mean.articles', []);

たとえば、配列に mean.controller を追加するなど、ここで参照されているものを変更しようとしましたが、モジュールが存在しないことが示されるため、明らかに正しい方法ではありません。

これが私のtaskController.jsです(私が従った平均的なチュートリアルは、タスクコントローラーをスタンドアロン関数にしましたが、角度のドキュメントが言う方法でコンストラクターとして宣言しています)

var mean = angular.module('mean',[]);

mean.controller('taskController', function taskController($scope){

   $scope.todos = [];

   $scope.doneFilter = { done : true };
   $scope.notDoneFilter = { done : false };

   $scope.setTodos = function(todos){
       $scope.todos = todos;
   };

});

angular.module('mean.system').controller('taskController', function taskController($scope){ ... } も試しましたが、同じ結果です。

ビューについては今すぐOK:default.jadeにng-appが含まれています

!!! 5
  html(ng-app='mean', lang='en', xmlns='http://www.w3.org/1999/xhtml', xmlns:fb='https://www.facebook.com/2008/fbml', itemscope='itemscope', itemtype='http://schema.org/Product')
    include ../includes/head
    body
     ...
     include ../includes/foot

次に、index.jadeに次のものがあります。

extends layouts/default

block head
  script(type='text/javascript', src='/js/controllers/taskController.js')

block content
  section(data-ng-view)
  div.container(ng-controller="taskController", ng-init="setTodos( #{JSON.stringify(todos)} )")
  ...
  div.row(ng-repeat="todo in todos | filter:notDoneFilter")
    label.checkbox
      input(type="checkbox", ng-model="todo.done")
      | {{ todo.description }}
    span.datestring
      i {{ todo.due | date: 'MMM d, yyyy' }}    
  ...
  div.row(ng-repeat="todo in todos | filter:doneFilter")
    label.checkbox
      input(type="checkbox", checked="true")
        del {{ todo.description }}
      span.datestring
        i {{ todo.due | date: 'MMM d, yyyy' }}

foot.jade インサート:

//AngularJS
script(type='text/javascript', src='/lib/angular/angular.js')
script(type='text/javascript', src='/lib/angular-cookies/angular-cookies.js')
script(type='text/javascript', src='/lib/angular-resource/angular-resource.js')

angularディレクティブが欠落しているとは思わず、コントローラー自体が機能するはずなので、これは基本的なアプリアーキテクチャの問題であり、物事がどのように組み合わされるのか理解していないと思います. どんな助けでも大歓迎です。

4

2 に答える 2

30

このエラーは主に、angularjs がどのモジュールでもコントローラーを見つけることができない場合に発生します。これは、誤ってモジュールを再定義した場合に発生する可能性があります。あなたの場合、私はそれを見ます

window.app = angular.module('mean', ['ngCookies', 'ngResource', 'ui.bootstrap', 'ui.route', 'mean.system', 'mean.articles' ]);

その後

var mean = angular.module('mean',[]);

この構文は、モジュールを再定義します。

angular.module('mean')2 番目のパラメーターを使用せずに既存のモジュールを取得するには。

于 2013-11-01T04:41:15.653 に答える
1

私は今この問題を抱えていました。上記のすべての提案を試しましたが、何も機能しませんでした。次に、AngularJS をバージョン 1.3.9-build.3746 からバージョン 1.2.8 にダウングレードしました。それが、ベータ版を使用することで得られるものです。

于 2015-01-03T21:53:12.710 に答える