从我带到当前页面的链接获取值

时间:2015-02-12 17:12:10

标签: javascript angularjs model-view-controller

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

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

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

所以,问题是: 在员工上,单击链接:

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

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

但是在索引视图中,有一小段代码可以告诉详细信息显示在哪里,并且有一个面包屑。因此,在Index ViewResult(EmployeeData / Index.aspx)中,我希望能够从链接中获取GUID,但是当我使用引荐来源时,它只是告诉我&# 34;您来自员工搜索"。

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只有&#34; EmployeeData&#34 ;.

所以,我需要做的是获取带有ID的完整URL,并将该ID传递给我的&#34; CreateBreadCrumbDisplay&#34;方法

思想?

2 个答案:

答案 0 :(得分:1)

我认为可能的解决方案是使用$routeParams抓取网址参数并将其传递给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" }

答案 1 :(得分:0)

只要我明白,你可以使用$ location服务, $ location.absUrl(); 你可以通过许多其他方式成功实现这一点,甚至可以将你的url作为参数传递给action方法提交。