Или, я не делаю одиночную страницу в строгом смысле слова...
Здравствуй,
Сначала некоторые
Задний план
У меня есть требование, чтобы все загруженные ранее страницы были сохранены на экране, поэтому состояние сохраняется без сохранения на хранение. Поэтому я (думаю, я) не могу использовать стандартную структуру одиночной страницы (используя ngView). Вместо этого я загружаю частичные представления MVC и добавляю их на текущую страницу, скрывая предыдущие записи.
apiService.View(viewInfo.Url).then(function (html) {
var container = $('#' + self.targetContainerId);
if (container) {
container.html($compile(html)($scope));
} else {
loggerService.Info(self.Name, "Unable to find container '" + self.targetContainerId + "'.")
}
});
Где viewInfo содержит следующее (для конкретного сценария, о котором я спрашиваю):
return {Breadcrumb: 'People', Url: 'Partial/PeopleOverview' + '/' + options.ScreenContextId + '/' + options.RoleTypeId};
apiService.View выполняет следующие действия:
return {
View: function (uri) {
return self.DoViewRequest('get', uri);
}
}
Основано на:
self.DoViewRequest = function (verb, uri) {
var defer = $q.defer();
verb = verb.toLowerCase();
//start with the uri
var httpArgs = [coreUtilityService.GetLocalUrl() + uri];
if (verb.match(/post|put/)) {
httpArgs.push(data);
}
$http[verb].apply(null, httpArgs)
.success(function (response) {
defer.resolve(response);
})
.error(function (response, status) {
defer.reject('HTTP Error: ' + status);
});
return defer.promise;
};
Что мне нужно решить
ScreenContextId и RoleTypeId - важная информация, которую мне нужно пройти по всей структуре. Он получен от вызывающего url, который является следующим:
/Главная/Люди /0f8fad5b-d9cb-469f-a165-70867728950e/7c9e6679-7425-40de-944B-e07fc1f90ae7
Было бы очень легко, если бы я мог использовать $ routeParams, но поскольку я не использую Single Page в строгом смысле, я не думаю, что это доступно. Я настроил маршрутизацию следующим образом:
.config([
'$routeProvider', function ($routeProvider) {
$routeProvider
.when('/Home/People/', {
templateUrl: '/Home/People/:screenContextId/:roleTypeId'
});
}
])
При этом я тогда (теоретически) мог бы использовать:
$ routeParams.screenContextId $ routeParams.roleTypeId
Вопрос
Можно ли использовать $ routeParams с учетом требуемого контекста или есть альтернативы, которые я должен использовать?
Или, есть ли способ использовать Единую страницу и отвечать моим требованиям (без сохранения состояния на хранение)?
Для этого вы можете использовать $ location.search(). Это даст вам объект с аналогичной структурой, такой же, как и $ routeParams.
Извините, помните, что неправильно, используйте $ location.path(). Split ('/'), вы получите массив параметров пути, затем просто получите доступ к правильному с индексом.