我期待开发一个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"
答案 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;如果你错过了一个,那么你的代码就会很容易出错。
这些是学习良好编码风格的基础。如果您可能并且有兴趣学习,我建议您继续接受我的建议。
希望这有帮助