UI路由器:嵌套状态解析

时间:2016-07-24 19:40:09

标签: angularjs angular-ui-router

我有两种状态:'联系人'和'contacts.all',这是previuos的子状态。我希望这个子状态从服务器预加载数据:

.state('contacts', {
    url: "/contacts",
    controller: 'ContactsCtrl'
})
.state('contacts.all', {
    url: "/all",
    resolve: {
        initialContacts: function (contactsCRUD) {
            return contactsCRUD.getAll().$promise;
        }
    }
})

然后将其注入ContactsCtrl控制器:

function ContactsCtrl($scope, initialContacts) {
    $scope.Contacts = initialContacts || {};
}

我确实需要仅在'contacts.all'中预加载这些数据,而不是'contacts'状态。如果我按原样保留此代码并尝试导航这些状态中的任何一个,那么我将得到一个注入错误,说“initialContacts”的“未知提供者”,因为控制器似乎在initialContacts已知之前被实例化。 什么是正常的做法?我知道我可以为父状态添加一个“resolve”选项,并将initialContacts设置为{},但我认为这不是一个好习惯。

0 个答案:

没有答案