var referrer = $document.referrer;
需要的值
$document.referrer
在一个变量中。
$document实际上是一个 jqLite/jQuery 查询结果,所以该属性不存在。如果您想获得推荐人,您可以:
a) 直接访问 DOM 文档:
var referrer = document.referrer;
不建议这样做,因为您在编写单元测试时会遇到麻烦。
b) 引用 jqLite/jQuery 查询结果中的对象:
var referrer = $document[0].referrer;
我个人也不喜欢这种方法,代码变得丑陋和误导。
c) 装饰$document:
myApp.config(function($provide){
$provide.decorator('$document', function($delegate){
$delegate.getReferrer = function() {return document.referrer;};
// alternative you can create a property
// Object.defineProperty($delegate, 'referrer', {
// get: function() { return document.referrer; }
// });
return $delegate;
});
});
然后获取推荐人:
var referrer = $document.getReferrer();
//Or if you created a property...
//var referrer = $document.referrer;
我更喜欢这个选项,因为你可以在单元测试中轻松地模拟这个对象,并且你的代码更容易理解。