AngularJS单控制器,多个$ http.get请求

时间:2015-09-23 08:55:33

标签: json angularjs

我期待开发一个AngularJS应用程序,如果我可以使用Single控制器发送多个$ http.get请求,每次都使用不同的URL,这取决于所调用的模板,我很想知道。

示例:

App.js

  .state('app.grocery', {
    url: '/grocery',
    views: {
      'menuContent': {
        templateUrl: 'templates/grocery.html',
        controller: 'MasterCtrl'
      }
    }
  })

 .state('app.beverages', {
    url: '/beverages',
    views: {
      'menuContent': {
        templateUrl: 'templates/beverages.html',
        controller: 'MasterCtrl'
      }
    }
  })

在我的Controller.js中,我希望首先捕获被调用的templateURL,并根据该设置$ http.get URL.Suppose如果templateURL是templates / grocery.html,$ http.get URL将是& #34; xyz.com/grocery.json"如果templateURL是templates / beverages.html,则$ http.get网址为" xyz.com/beverages.json"

3 个答案:

答案 0 :(得分:0)

您必须检查控制器中的哪个页面名称

.controller('MasterCtrl', function($scope, $stateParams,$state) 
{
    if($state.current.name==='grocery')
    {
        //call grocery $http.get() for grocery
    }
    else
    {
        //call beverages $http.get() for beverages
    }
})

答案 1 :(得分:0)

您可以在自己的状态中设置$state.current,并使用jsonName在控制器中使用,.state('app.grocery', { url: '/grocery', views: { 'menuContent': { templateUrl: 'templates/grocery.html', controller: 'MasterCtrl' } }, jsonName: 'grocery' }) .state('app.beverages', { url: '/beverages', views: { 'menuContent': { templateUrl: 'templates/beverages.html', controller: 'MasterCtrl' } }, jsonName: 'beverages' }) 将获得您想要的信息{/ 1}}。

<强>代码

app.controller('MasterCtrl', function($state, $scope, $http){

   //$state.current.jsonName will provide current json name
   $http.get('xyz.com/'+ $state.current.jsonName +'.json')
   .succcess(function(){
      //code when ajax success
   });

})

<强>控制器

Country1    Country2     Value     Category
A           A            4         1
A           B            2         1
A           C            9         1
B           A            3         2
B           D            4         1
C           A            2         2
D           C            7         2
...

答案 2 :(得分:0)

当然你可以 - @Paresh的上述答案是正确的。

然而,在我看来,你不应该这样做。你的方法是这样的,也许是因为你不喜欢有很多文件或控制器。但无论什么原因,拥有一个单独的控制器将帮助您拥有一小部分明确的代码,每个代码都负责一种类型的操作。

如果您想要实施单元测试,或者有很多变化,例如您要求的变化,或者甚至是复杂的逻辑:按照您的方式实施单元测试需要花费很多时间&#39; IF&#39 ;到处都是这样的逻辑块。

如果你决定要决定杂货&#39;应该成为杂货店&#39;它会变得很多&找到&amp; amp;替换&#39;如果你错过了一个,那么你的代码就会很容易出错。

这些是学习良好编码风格的基础。如果您可能并且有兴趣学习,我建议您继续接受我的建议。

希望这有帮助