AngularJS:当不使用Single Page时,有没有办法使用$routeParams
本文关键字:有没有 routeParams Page Single AngularJS | 更新日期: 2023-09-27 18:10:22
或者,我不是在做严格意义上的"单页"。。。
你好,
首先一些
背景
我有一个要求,所有以前加载的页面都需要在屏幕上持久化,这样就可以在不保存到存储的情况下保持状态。所以我(认为我(不能使用标准的单页结构(使用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包含以下内容(针对我询问的特定场景(:
返回{面包屑:"人民",Url:"部分/人员概述"+"/"+选项。ScreenContextId+'/'+选项。角色类型ID};
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 /主页/人物/0f8fad5b-d9cb-469f-a165-70867728950e/7c9e6679-7425-40de-944b-e07fc1f90ae7 如果我可以使用$routeParams,这将非常容易,但由于我不是严格意义上使用单页,我认为它不可用。我设置了这样的路由: 有了这个,我(理论上(就可以使用: $routeParams.screenContextId$routeParams.roleTypeId 问题 在给定所需上下文的情况下,是否可以使用$routeParams,或者是否有我应该使用的替代方案? 或者,有没有一种方法可以使用Single Page并满足我的要求(而无需将状态持久化到存储(?.config([
'$routeProvider', function ($routeProvider) {
$routeProvider
.when('/Home/People/', {
templateUrl: '/Home/People/:screenContextId/:roleTypeId'
});
}
])
为此,您可以使用$location.search((。它将为您提供与$routeParams结构相似/相同的对象。
对不起,请记住,如果使用$location.path((.split('/'(,您将获得路径参数的数组,然后只访问带有索引的正确数组。