我有以下json,我正在从中提取tweeturl
{
"name": "Lifehacker",
"handle": "@lifehacker",
"avatar": "images/lifehacker.png",
"time": "1h",
"tweet": "Workflow, the nifty automation app on iOS, just got a heck of a lot easier to use: ",
"attachments": {
"media": "image",
"url": "images/twitter.jpg"
},
"tweeturl": "http://lifehac.kr/L18xlfM",
"interaction": {
"like": "2m",
"retweet": "5k"
}
}
并显示如下:
<a href="{{tweets.tweeturl}}" ng-show="{{tweets.tweeturl}}">{{tweets.tweeturl}}</a>
但每次执行时我都会获取URL,但在控制台上也会收到错误
Syntax Error: Token ':' is an unexpected token at column 5 of the expression [http://lifehac.kr/L18xlfM] starting at [://lifehac.kr/L18xlfM].
我很擅长角度任何帮助和解释将不胜感激
答案 0 :(得分:2)
ng-show
需要表达式(例如,范围变量中定义的名称,其值为 truthy 或 falsy 值),而不是字符串。
您不必使用{{ }}
语法对其进行插值。只需直接传递变量:
<a href="{{tweets.tweeturl}}" ng-show="tweets.tweeturl">{{tweets.tweeturl}}</a>
当你写ng-show="{{tweets.tweeturl}}"
时,会发生什么是Angular首先将{{tweets.tweeturl}}
插入http://lifehac.kr/L18xlfM
- 然后它会尝试将其视为表达式,所以就像你试图写一个这样的JavaScript:
function someFunction () {
var abc = '123';
http://lifehac.kr/L18xlfM // <- this is not a correct expression
return abc;
}
答案 1 :(得分:0)
如果我能提供一些如何使用ng-show和ng-href的例子就是这两个。
首先,我会在我的控制器上放置$ scope或$ this变量,并为其分配从服务中获得的JSON答案($ http ???)。然后将错误变量设置为true或false。
$http.get("tweets.json").then(function(response) {
//First function handles success
$scope.content = response.data;
$scope.errorGet = false;
}, function(response) {
//Second function handles error
$scope.content = "Something went wrong";
$scope.errorGet = true;
});
鉴于你现在可以肯定地知道你是否得到了你的Json推文,你可以在你看来重构:
<a href="{{tweets.tweeturl}}" ng-show="errorGet">{{tweets.tweeturl}}</a>
现在我们已经设定,我需要解释为什么你不应该使用href和insted使用ng-href。在您点击链接之前,可以评估表达式{{}}。
因此,重构代码的正确方法是:
<a ng-href="{{tweets.tweeturl}}" ng-show="errorGet">{{tweets.tweeturl}}</a>
指向ng-href doc https://docs.angularjs.org/api/ng/directive/ngHref
的链接希望有所帮助