0

例として、以下のように定義されたコントローラー/サービスなどがあります。

function IndexController($scope, shoppingItems) {
     $scope.items = shoppingItems;
 }

次に、すべての JS を次のようにグローバル名前空間から保護する必要があるかどうか疑問に思いました。

 (function() {

     function IndexController($scope, shoppingItems) {
         $scope.items = shoppingItems;
     }
 });

アプリが機能しなくなりました。これを行う必要があるかどうか、必要な場合はどのように機能させるかを説明していただけますか。

ありがとう

4

2 に答える 2

0

コントローラーを登録する新しいスタイルを使用することをお勧めします (少なくとも現在は1.0.3、そうかもしれません1.0.1) 。

(function() {
  //this will simulate creating the app with all needed dependencies
  var app = angular.module('app', ['my.dependecy1', 'my.dependecy1']);
  //...init code maybe
});

(function() {
  //this will only retrieve it or create if it it doesn't exist
  //I suggest you create it in another place passing all needed dependencies
  var app = angular.module('app');

  //I also recommend listing injectable variables manually,
  //this way if you ever need minification you're safe
  app.controller('IndexController', ['$scope', 'shoppingItems', 
     function IndexController($scope, shoppingItems) {
         $scope.items = shoppingItems;
     }
  ]);

}());
于 2013-01-30T14:10:17.167 に答える
0

最後の括弧のペアが欠落しているため、関数がすぐに評価される関数になります:

(function() {
     function IndexController($scope, shoppingItems) {
         $scope.items = shoppingItems;
     }
 })();
于 2013-01-30T10:22:55.370 に答える