2014-01-29 57 views
-1

我是AngularJS的新手,我有一堆正在執行CRUD操作的控制器。這些控制器都向相同的基本URL發出請求,將這個URL傳遞給每個控制器的正確方法是什麼,而不必將其重寫到每個控制器或只是創建一些全局控制?由於我是Angular的新手,我想知道是否有一些已經在$ http中創建的工具,我只需要設置該值。將Angular JS中的所有控制器傳遞給同一個Web地址的正確方法是什麼?

+1

請參閱[這個問題](http://stackoverflow.com/questions/18896535/the-better-approach-to-design-angularjs-services/18896885#18896885) – Beterraba

+0

謝謝這看起來像我在找什麼 – user602525

回答

-1

嗯,我想你應該創建一個服務,並在那裏舉重,並公開控制器可以調用的方法。

-1

有兩種方法做到這一點...

第一種方法是通過$ rootscope。 $ rootscope是所有控制器中所有$範圍的父項,因此您分配給$ rootcope的任何屬性都可以通過任何$ scope訪問。

通過運行下面的代碼,那麼你就可以訪問「http://myurl.com」在任何控制器使用$ scope.url

angular.module('myApp', []) 
.run(function($rootScope) { 
    $rootScope.url = "http://myurl.com"; 
}); 

另一種方法是使用一個服務/工廠這樣的...

app.factory('globalurl', function() { 
    return "http://myurl.com"; 
}); 

然後寫所有的控制器是這樣的...

function Ctrl1($scope, globalurl) { 
    $scope.url = globalurl(); 
} 
2

的第一個問題你是否不必在控制器中執行你的CRUD操作。 CRUD是MVC Model部分的工作。

首先,你可以使用常數:

angular.module('MyApp') 
.constant('ENV_URL','https://test.com'); 

而且你可以注入,並調用這個常量在你需要它。

接下來,你的CRUD已被放置在一個工廠這樣的:

angular.module('myApp').factory('usersFact',function ($resource,ENV_URL) 
      { 
    var User = $resource(ENV_URL, { userId: '@id' }, { 
     get: { 
      method: 'GET', 
      isArray: false, 
      headers: { 'Accept': 'what you need' } 
     },post : {}, put :{} 


     } 
    }); 

    return { 
     getSummary : function (id, cb) { 
      var summary = User.getSummary({ userId: id }, 
       function() { 
        console.log(summary); 
        }); 

      return summary; 
     } 
    }; 
} 

);

而且,在你的控制器你現在可以使用你的數據:

angular.module('MyApp').controller('ProfilCtrl', 
function ($scope,usersFact,) { 
    $scope.userInfo = usersFact.getSummary(userId, function() { 
     console.log($scope.userInfo) 
    }); 

} );

相關問題