Я начинаю с угловатым, и я пытаюсь обновить представление на основе 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>
Я знаю, что это плохой код, но мои мысли состояли в том, чтобы перейти к сведениям о состоянии и запустить обновление функции с идентификатором записи. Затем перейдите через идентификатор и обновите представление, основанное на щелкнутом элементе.
Код работает нормально, но я думаю, что есть намного лучший способ сделать это, и мне нужно его динамически.
Я действительно застрял в этом и хотел бы сделать это правильно. Как это сделать? Можете ли вы дать мне подсказку, пожалуйста?
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>