首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >出厂http.get成功后视图不刷新(连锁承诺在使用中)

出厂http.get成功后视图不刷新(连锁承诺在使用中)
EN

Stack Overflow用户
提问于 2016-08-15 06:52:18
回答 1查看 75关注 0票数 0

我已经阅读了更多关于这个特定主题的教程和帖子,但我仍然无法找到解决方案。我需要在绑定到$scope.p.devices的链接的promise返回后刷新视图。我尝试过禁用缓存视图(仍处于禁用状态)和许多其他解决方案。希望这里有人能给我指个方向。

HTML:设备列表

代码语言:javascript
复制
  <md-card>
    <ion-content>
      <div class="card-content">
        <div class="device-content-detail"
          collection-repeat="device in p.devices"
          collection-item-height="136px"
          collection-item-width="100%">
          <div class="card-content">
              <h1 class="md-title">
                      <span>
                          <i class="fa fa-crosshairs" aria-hidden="true"></i>
                        Device List
                      </span>
              </h1>
          {{device.name}}
        </div>
      </div>
    </ion-content>
  </md-card>

代码语言:javascript
复制
    <md-list>
        <md-card ng-if="!isAnimated" class="card-item" ng-repeat="device in p.devices track by $index">
                <md-card-content>
                    <div class="card-content">
                        <h1 class="md-title">
                                <span>
                                  Device List
                                    <i class="fa fa-crosshairs" aria-hidden="true"></i>{{device.name}}
                                </span>
                        </h1>
                        <div class="device-content-detail">
                            <i class="fa fa-wifi" aria-hidden="true"></i>{{device.connected}}
                            <i class="fa fa-heartbeat" aria-hidden="true"></i>{{device.last_heard}}
                        </div>
                    </div>
                </md-card-content>
        </md-card>

控制器:

代码语言:javascript
复制
appControllers.controller('devicesCtrl', function ($scope,$state,$stateParams,$timeout,$mdDialog,$ionicHistory,$ionicLoading,particle,pDevices,safeparse) {
//$scope.isAnimated is the variable that use for receive object data from state params.
//For enable/disable row animation.
var debug = true;
$ionicLoading.show({
  content: 'Getting Devices',
  animation: 'fade-in',
  showBackdrop: true,
  maxWidth: 200,
  showDelay: 0
});

$timeout(function () {
  pDevices.getpDevices().then(function(data) {
    $scope.p.devices = data;
    if (debug) console.log(debug + 'time out got particle.io device list: ', $scope.p.devices);
    $scope.isLoading = false;
    if (debug) console.log(debug + 'time out complete, hiding ionicLoading: ');
    $ionicLoading.hide();
  }, function() {
    $scope.p.showAlertDialog($event);
    $scope.error = 'unable to load devices'
    });
  }, 2000);

$scope.initialForm = function () {
    //$scope.isLoading is the variable that use for check statue of process.
    $scope.isLoading = true;
    $scope.isAnimated =  $stateParams.isAnimated;
};// End initialForm.

$scope.$watch('p.devices', function (newVal, oldVal){
    console.log(newVal, oldVal)
  });

$scope.p = {
  currentDevice: '',
  deviceId: particle.setDevice(),
  token: particle.setToken(),
  devices: [],

  getDevices: function () {
        pDevices.getpDevices().then(function(deviceList) {
          if (debug) console.log(debug + 'getDevices got particle.io device list: ', deviceList);
          $scope.p.devices = deviceList.data;
        });
      },

  // Select the current device for particle platform
  setDevice: function (deviceId) {
    if (deviceId) {
      if (debug) console.log(debug + 'setDevice', deviceId);
      $scope.p.deviceId = deviceId;
      particle.setDevice(deviceId);
      $scope.startup();
    }
    return $scope.p.deviceId;
  }
};

showAlertDialog = function ($event) {
    $mdDialog.show({
        controller: 'DialogController',
        templateUrl: 'confirm-dialog.html',
        targetEvent: $event,
        locals: {
            displayOption: {
                title: "No Devices Found.",
                content: "Unable to load Device List.",
                ok: "Confirm"
            }
        }
    }).then(function () {
        $scope.dialogResult = "You choose Confirm!"
    });
}// End showAlertDialog.
$scope.initialForm();
});// End of controller Device.

最后,工厂被调用:

代码语言:javascript
复制
appServices.factory('pDevices', function($http, localstorage) {
root_url = 'https://api.particle.io/v1/'
  var getpDevices = function() {
return $http.get(root_url + 'devices').then(function(response){
  console.log('pDevices getpDevices: ', response.data);
  return response.data;
  });
};
  return {
  getpDevices: getpDevices
  };
});

我得到的屏幕截图:

EN

回答 1

Stack Overflow用户

发布于 2016-08-15 21:31:36

事实证明,问题完全出在我的HTML/SASS div标记以及我的对象数组(不是设备,而是对象)中。这是工作,但需要一些格式更正。

代码语言:javascript
复制
<ion-view cache-view="false" title="Device List">
<!--note list section-->
<ion-content id="device-list-content" class="bg-white">
  <md-list>
        <md-card class="card-item"
          collection-repeat="Object in p.devices"
          collection-item-height="136px"
          collection-item-width="100%">
          <md-divider></md-divider>
          <md-card-content>
              <div class="card-content">
                <h1 class="md-title-device">
                        <span>
                            <i class="fa fa-crosshairs" aria-hidden="true"></i> {{Object.name}}
                        </span>
                </h1>
                <div class="device-content-detail">
                  <div ng-show="Object.connected">
                    <i class="fa fa-wifi" aria-hidden="true"></i>
                    <i class="fa fa-heartbeat" aria-hidden="true"></i>{{Object.last_ip_address}}
                  </div>
                  <div ng-show="!Object.connected">
                    <i class="fa fa-wifi" aria-hidden="true"></i>
                    <i class="fa fa-heart-o" aria-hidden="true"></i>{{Object.last_heard}}
                  </div>
                </div>
              </div>
            </md-card-content>
          </md-card>

    </md-list>
</ion-content>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38947313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档