【问题标题】:Get values from link that brought my to the current page从将我带到当前页面的链接中获取值
【发布时间】:2015-02-12 17:12:09
【问题描述】:

我知道 - 你要说的第一件事是“使用推荐人!”

但那是错误的答案,我会解释原因。

假设您在一个页面上,比如说“员工”,它有一个搜索。名称的搜索字段在提交时会生成一个员工表。在该表中,Employee Name 是一个可点击的对象,在本例中是一个超链接。该链接转到员工详细信息页面。在那个页面上,实际上什么都没有,因为那个页面实际上从一个子页面加载了一堆 Angular 数据。

所以,问题: 在员工上,您单击一个链接:

http://localhost/EmployeeData#/details/cc30e1f8-b21c-4384-9710-e927686c925c

该链接将您带到 EmployeeData 控制器和索引视图。索引视图加载了 details.html,这是一个充满数据的角度幸福。效果很好。

但是在索引视图中,有一小段代码告诉细节在哪里显示,并且有一个面包屑。因此,在 Index ViewResult (EmployeeData/Index.aspx) 中,我希望能够从将您带到那里的链接中提取 GUID...但是当我使用引荐来源网址时,它只会告诉我“您来自员工搜索”。

public ViewResult Index()
    {
        var vm = _vmp.GetViewModel<EmployeeDataViewModel>();

        vm.Breadcrumb = CreateBreadCrumbDisplay();

        return View(vm);
    }

public string CreateBreadCrumbDisplay()
    {
        var referrer = (Request.UrlReferrer != null) ? Request.UrlReferrer.AbsoluteUri : string.Empty;

        var curUrl = Request.ServerVariables["SCRIPT_NAME"];
        //do lots of stuff
        return theBreadCrumb;
    }

在这种情况下,CreateBreadCrumbDisplay 只返回 http://localhost/Employee。并且 curUrl 只有“EmployeeData”,这要归功于 Angular 页面中发生的所有真实数据,而不是实际上在 Index 视图中。

所以,我需要做的是获取带有 ID 的完整 URL,然后将该 ID 传递给我的“CreateBreadCrumbDisplay”方法。

想法?

【问题讨论】:

    标签: javascript angularjs model-view-controller


    【解决方案1】:

    我认为一个可能的解决方案是使用 $routeParams 获取 URL 参数并将其从 Angular 传递给您的 CreateBreadCrumbDisplay 方法。

    如果我正确理解您的问题,阅读$routeParams here 应该可以解决您的问题。


    以下是它应该如何工作的示例:

    首先在 Angular 中配置你的路由

    myApp.config(function($routeProvider) {
    
        $routeProvider.when('/link/:GUID', {
            controller: 'SomeCtrl',
            templateUrl: 'sometemplate.html'
        });
    });
    

    然后在你的控制器中

    myApp.controller('SomeCtrl', function($scope, $routeParams) {
        console.log($routeParams);
    });
    

    从某个地方链接到它

    <a href="#/link/cc30e1f8-b21c-4384-9710-e927686c925c">foo</a>
    

    最后是控制台输出:

    { GUID: "cc30e1f8-b21c-4384-9710-e927686c925c" }
    

    【讨论】:

      【解决方案2】:

      据我了解,您可以使用 $location 服务 $location.absUrl(); 而且您可以通过许多其他方式成功,甚至将您的 url 作为参数传递给 action 方法提交。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-02
        • 1970-01-01
        • 2011-06-17
        • 2012-09-05
        相关资源
        最近更新 更多