我正在使用有角度的ui路由器,并且有一个父抽象状态(" home")和两个子状态(" home.ports"和" home.editPort&# 34)。州。 " home.state"是一个默认状态,所以当home.state加载它时,页面刷新首先触发父(" home")状态,然后在resolve属性中触发http请求。我的子状态可以在服务器上进行更改,并可以更新父状态列表。所以,问题是当我要进入子状态(" home.editPort")并回到home.ports它不会触发本地状态来获取更新的列表
.state('home', {
url: "/home",
templateUrl: "dest/partials/home/_home.html",
controller: "HomeController",
abstract : true,
data: {
requireLogin: true
},
resolve: {
// making an http request
jqTreeData : ['httpService', 'BASE_HOME_URL', function (httpService, BASE_HOME_URL) {
var obj = {
url : BASE_HOME_URL + "emulationDetails",
responseType : "json",
method : "GET"
};
return httpService.makeAjax(obj);
}]
}
})
.state('home.ports', {
url: "/ports",
//templateUrl: "dest/partials/home/ports/_portList.html",
template: "<custom-Table tbl-Caption='Port Listing'></custom-Table>",
controller: "PortsListController"
})
.state('home.editPort', {
url: "/editPort",
template: "<h1>Edit ports</h1>"
});
答案 0 :(得分:0)
只有在输入家庭状态时才会调用resolve
- 因为您在home.ports
和home.editPort
之间导航,并且两者都是home
的子状态 - 您永远不会实际上离开home
状态 - 所以resolve
不会再被调用 - 你仍处于该状态。
您可能需要再次调用该服务来获取由home.editPort
状态下的任务完成所触发的数据。