AngularJS:当不使用Single Page时,有没有办法使用$routeParams

AngularJS: Is there a way to use $routeParams when not using Single Page

本文关键字:有没有 routeParams Page Single AngularJS      更新时间:2023-09-26

或者,我不是在做严格意义上的"单页"。。。

你好,

首先一些

背景

我有一个要求,所有以前加载的页面都需要在屏幕上持久化,这样就可以在不保存到存储的情况下保持状态。所以我(认为我(不能使用标准的单页结构(使用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;
};

我需要解决的问题

ScreenContextIdRoleTypeId

/主页/人物/0f8fad5b-d9cb-469f-a165-70867728950e/7c9e6679-7425-40de-944b-e07fc1f90ae7

如果我可以使用$routeParams,这将非常容易,但由于我不是严格意义上使用单页,我认为它不可用。我设置了这样的路由:

.config([
    '$routeProvider', function ($routeProvider) {
        $routeProvider
        .when('/Home/People/', {
            templateUrl: '/Home/People/:screenContextId/:roleTypeId'
        });
    }
])

有了这个,我(理论上(就可以使用:

$routeParams.screenContextId$routeParams.roleTypeId

问题

在给定所需上下文的情况下,是否可以使用$routeParams,或者是否有我应该使用的替代方案?

或者,有没有一种方法可以使用Single Page并满足我的要求(而无需将状态持久化到存储(?

为此,您可以使用$location.search((。它将为您提供与$routeParams结构相似/相同的对象。

对不起,请记住,如果使用$location.path((.split('/'(,您将获得路径参数的数组,然后只访问带有索引的正确数组。

相关文章: