Решение проблемы компонента, зависящего от маршрутизатора Angular UI

#javascript #angularjs #angular-ui-router

#javascript #angularjs #angular-ui-router

Вопрос:

В примере приложения маршрутизатора пользовательского интерфейса есть пример, где один объект разрешения используется в следующем разрешении. https://github.com/ui-router/sample-app-ng1/blob/master/app/mymessages/mymessages.states.js#L76

 resolve: {
    // Fetch the current folder from the Folders service, using the folderId parameter
    folder: (Folders, $stateParams) => Folders.get($stateParams.folderId),

    // The resolved folder object (from the resolve above) is injected into this resolve
    // The list of message for the folder are fetched from the Messages service
    messages: (Messages, folder) => Messages.byFolder(folder)
  }
  

Я пробовал приведенный ниже код в ES5 javascript, но получаю ошибку:

"Cannot read property 'propertyName' of undefined"

 resolve: {
 viewModel: ['viewModelService', function (viewModelService) {
        return viewModelService.get().then(function (response) {
            return response.data;
        });
    }],
    anotherViewModel: this.viewModel.propertyName
}
  

Комментарии:

1. что такое this.viewModel ? это оценивается как undefined

2. this.viewModel предполагается, что это viewModel объект, который был разрешен выше anotherViewModel

3. тогда смотрите мой ответ

Ответ №1:

Это должно сработать:

 resolve: {
    viewModel: ['viewModelService', function (viewModelService) {
            return viewModelService.get().then(function (response) {
                return response.data;
            });
        }
    ],
    anotherViewModel: ['viewModel', function (viewModel) {
            viewModel.propertyName
        }
    ]
}
  

Комментарии:

1. Блестяще. Работает хорошо.

2. @WilJones, нет проблем. Вы можете принять мой ответ, если это помогло.