23

ローカル開発環境で正常に動作するRails/AngularJSアプリがあります。ただし、このアプリをHerokuにデプロイすると、AngularJSが機能せず、次のエラーが返されます。

Unknown provider: eProvider <- e

少し調べてみたところ、アセットのプリコンパイルとミニファイと関係があるようですが、これを解決するために何をすべきかわかりません。何か案は?ありがとう!

コントローラの外観は次のとおりです。

function RemindersCtrl($scope, $http) {
  $http.get('/reminders.json').success(function(data) {
    $scope.reminders = data;
    console.log(data);
  });
}

そして、これはビューのコードです:

    %section.reminders
      %div{"ng-controller" => "RemindersCtrl"}
        %ul
          %li{"ng-repeat" => "reminder in reminders"}
            .title {{reminder.title}}

更新:コントローラーをこれに変更しましたが、同じ結果になりました:

var RemindersCtrl = function($scope, $http) {
  $http.get('/reminders.json').success(function(data) {
    $scope.reminders = data;
    console.log(data);
  });
}
RemindersCtrl.$inject = ['$scope','$http'];
4

3 に答える 3

27

AngularJSチュートリアル(http://docs.angularjs.org/tutorial/step_05)によると、これをコントローラーに追加して、縮小の問題を防ぐことができます。

function RemindersCtrl($scope, $http) {
  ...
}
RemindersCtrl.$inject = ['$scope', '$http'];

または、次のような関数を定義する代わりに:

function RemindersCtrl($scope, $http) {
  ...
}

これは次のように行う必要があります。

var RemindersCtrl = ['$scope', '$http', function($scope, $http) {
  ...
}];
于 2012-12-03T14:50:23.440 に答える
5

コントローラを次のように定義している可能性があります。次のFooController = function($http) {}ように定義する必要がありますFooController = ["$http", function($http){}]

ここでmroeを参照してください

于 2012-11-28T18:13:42.393 に答える
5

Angularチーム(および一般的に言えば)は、グローバルスコープを汚染しないことを推奨しています。

.controllerメソッド、

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

myApp.controller('GreetingCtrl', ['$scope', function($scope) {
  $scope.greeting = 'Hola!';
}]);

私のためにうまくいった。これは、AngularUnderstandingControllersのドキュメントに記載されています

于 2013-11-09T00:45:26.083 に答える