[英]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.