角度获取语法错误:令牌':'从JSON

时间:2016-11-17 23:31:56

标签: javascript angularjs angular-directive

我有以下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].

我很擅长角度任何帮助和解释将不胜感激

2 个答案:

答案 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

的链接

希望有所帮助