我是angular的初学者,我正在尝试根据http请求更新视图。
$scope.update = function(id){
switch (id) {
case 1:
$http.get(Backand.getApiUrl() + '/1/objects/details')
.then(function(response) {
$scope.details = response.data.data[0];
$rootScope.locName = response.data.data[0].locationName;
$rootScope.locSubTitle = response.data.data[0].locationSubTitle;
$rootScope.locParagraph = response.data.data[0].locationParagraph;
$rootScope.locGluten = response.data.data[0].glutenfrei;
$rootScope.locRaucher = response.data.data[0].raucher;
$rootScope.locGarten = response.data.data[0].garten;
$rootScope.locTakeAway = response.data.data[0].takeaway;
$rootScope.locRollstuhl = response.data.data[0].rollstuhl;
console.log($rootScope.locGluten);
});
break;
case 2:
$http.get(Backand.getApiUrl() + '/1/objects/details')
.then(function(response) {
$rootScope.locName = response.data.data[1].locationName;
$rootScope.locSubTitle = response.data.data[1].locationSubTitle;
$rootScope.locParagraph = response.data.data[1].locationParagraph;
$rootScope.locGluten = response.data.data[1].glutenfrei;
$rootScope.locRaucher = response.data.data[1].raucher;
$rootScope.locGarten = response.data.data[1].garten;
$rootScope.locTakeAway = response.data.data[1].takeaway;
$rootScope.locRollstuhl = response.data.data[1].rollstuhl;
});
break;
default:
}
}
$scope.goToDetail = function(id) {
$state.go("detail")
$scope.update(id);
}
HTML
<div ng-repeat="cat in content" class="animated lightSpeedIn">
<a ng-click="goToDetail(cat.id)" nav-transition="none"><div ng-style="{'background': 'url(' + cat.catBgUrl + ')','background-repeat': 'no-repeat','background-size': '100% 100%','display': 'block','width': '100%','height': '25vh' }" class="bgcat center">
<div class="inner">
<h1>{{cat.catName}}</h1>
<h4>{{cat.catSubtitle}}</h4>
<img src="img/home/open.png" alt="">
</div>
</div></a>
</div>
我知道这是错误的代码,但我的想法是转到状态详细信息并使用条目的id运行函数更新。然后切换到id并根据单击的元素更新视图。
代码工作正常,但我认为有更好的方法来做它,我需要动态。
我真的坚持这个并且想要正确地做到这一点。该怎么做?你能给我一个提示吗?
答案 0 :(得分:2)
for codes relating to data it is better to use services for separation.
**Your service**
让 app
成为你的角度模块
app.service('detailService',function($http){
var update = function(id,callback){
switch (id) {
case 1:
$http.get(Backand.getApiUrl() + '/1/objects/details')
.then(function(response) {
callback(response,0);
});
break;
case 2:
$http.get(Backand.getApiUrl() + '/1/objects/details')
.then(function(response) {
callback(response,1);
});
break;
};
});
**Your controller**
app.controller('myCtrl',function($scope,$state,detailService){
detailService.update(id,function(response,index){
$scope.response = response;
$scope.index = index;
$state.go("detail"):
});
});
**You can display the response as**
<p>Details : {{response.data.data[{{index}}]}}</p>
<p>Location Name : {{response.data.data[{{index}}].locationName}}</p>