簡體   English   中英

AngularJS - 已解析的數據不會在嵌套狀態組件中刷新

[英]AngularJS - Resolved data doesn't refresh in nested state components

我正在使用 AngularJS 1.5、ui-router 和 angular-resource,我正在開發一個基於組件的應用程序。 我有一個父狀態,用於獲取和更新數據,該數據通過父狀態解析器綁定到多個子狀態。

當我在父組件控制器(例如vm.town.x = 666 )中手動更改數據時,一切正常,並且更改在子狀態組件中可見。 但是,當我根據其余服務的響應(使用 angular-resource)更改父組件控制器中的數據時,數據更改僅在父狀態組件中可見。

狀態定義:

.state('town', {
  url: '/my-towns/:townId/',
  component: 'town',
  bindings: {
    town: 'townData'
  },
  resolve: {
    townData: function(Town, $stateParams) {
      return Town.get({
        townId: $stateParams.townId
      });
    }
  }
})

.state('town.detail', {
  url: 'detail',
  component: 'townDetail',
  bindings: {
    town: 'townData'
  }
})

父(鎮)組件控制器定義:

function TownCmpController(TownServices,Town,BuildingUpgradeRest) {
  var vm = this;
  this.upgradeBuilding = function(data) {
     vm.town = BuildingUpgradeRest.update({townId:  vm.town.TownId,buildingId: data.building.BuildingId});
}

休息服務定義:

.factory('BuildingUpgradeRest',function($resource){
    return   $resource('api/public/v1/myaccount/towns/:townId/buildings/:buildingId/upgrade', {townId:'@townId', buildingId: '@buildingId'}, {
    'update': {
      method: 'PUT'
      }
    });
  })

'town' 對象綁定在兩個組件中是相同的

bindings: {
    town: '<'
  }

兩種服務都返回相同的對象類型並且都可以工作。

function TownCmpController(TownServices,Town,BuildingUpgradeRest) {
  var vm = this;
  this.upgradeBuilding = function(data) {
     BuildingUpgradeRest.update({townId:  vm.town.TownId,buildingId: data.building.BuildingId}).then(function (response) {
       vm.town = response;
     })
  }
}

您的服務返回承諾,因此您重新響應服務響應,然后設置 vm.towns

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM