Gor*_*vic 15 angularjs angularjs-directive angularjs-ng-href
我仍然是angularjs的新手,我有一个问题,我似乎无法找到解决方案,我没有时间去研究角度来源.
这是我的情景:
我有一些json数据与我想要在屏幕上显示的网址集合.我有一个元素ng-repeat="link in links"
和内部
<a ng-href="{{link.url}}">{{link.title}}</a>
Run Code Online (Sandbox Code Playgroud)
这可行,但所有链接都指向mydomain/apppath/valueoflink.title 我希望它们是绝对的,只有valueoflink.title没有任何前缀.
如何告诉角度它绝对不是相对url?
Ton*_*ven 18
正如Goran所说,只有当所有网址都像'www.google.com'时,他的解决方案才有效.
如果您有不同类型的网址,前"www.google.com"的组合," https://github.com "," http://goo.gl ","github.com",你可以使用带角度滤波器的ng-href:
<a ng-href="{{link.url|myFilter}}">{{link.title}}</a>
Run Code Online (Sandbox Code Playgroud)
和一个过滤器,如果它以"www"开头,它会将"http://"附加到您的网址:
'use strict';
myApp.filter("myFilter", function () {
return function (link) {
var result;
var startingUrl = "http://";
var httpsStartingUrl = "https://";
if(link.startWith(startingUrl)||link.startWith(httpsStartingUrl)){
result = link;
}
else {
result = startingUrl + link;
}
return result;
}
});
String.prototype.startWith = function (str) {
return this.indexOf(str) == 0;
};
Run Code Online (Sandbox Code Playgroud)
Gor*_*vic 14
我通过在json中用'http://'前缀数据来解决它,使它们成为绝对的url,而angularjs则尊重它.
然后我明白,角度实际上并没有做任何有价值的东西,它只是把它放在那里,看到它是我的错.
当所有网址都像'www.google.com'时,将代码更新为此解决问题
<a ng-href="http://{{link.url}}">{{link.title}}</a>
Run Code Online (Sandbox Code Playgroud)
简单的旧"检查元素"发现问题,我忽略了ng-href与{{value}}语法绑定的事实,所以这就是为什么我的第一次尝试ng-href="'http://'+{{value}}"
失败并导致我过早地提出问题,但我不是确定我是否应该删除它,因为我可能不只是犯了这样的错误.