子状态不以角度触发父状态

时间:2016-10-04 09:50:44

标签: javascript angularjs angular-ui-router

我正在使用有角度的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>"
});

1 个答案:

答案 0 :(得分:0)

只有在输入家庭状态时才会调用resolve - 因为您在home.portshome.editPort之间导航,并且两者都是home的子状态 - 您永远不会实际上离开home状态 - 所以resolve不会再被调用 - 你仍处于该状态。

您可能需要再次调用该服务来获取由home.editPort状态下的任务完成所触发的数据。