动态更新基于http请求的角度视图

时间:2016-07-29 20:10:25

标签: javascript angularjs ionic-framework

我是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并根据单击的元素更新视图。

代码工作正常,但我认为有更好的方法来做它,我需要动态。

我真的坚持这个并且想要正确地做到这一点。该怎么做?你能给我一个提示吗?

1 个答案:

答案 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>