【问题标题】:Error: Syntax Error: Token ',' is an unexpected token错误:语法错误:令牌“,”是意外的令牌
【发布时间】:2013-11-11 02:04:55
【问题描述】:

我有一个奇怪的错误,我不知道如何解决。我不断收到错误:语法错误:令牌','是表达式第 6 列的意外令牌 [Cough, splutter, slobber 你是谁?你想要什么?] 已从 JSON 文件加载。它已经工作了几个星期,但现在不行了

这是调用字符串的代码行

<div id="story-text" ng-bind-html-unsafe="{{page.text}}" ></div>

这是加载数据的工厂,似乎加载正确

  .factory('Stories', ['$http', function($http) {

            var factory = {};
            var stories = null;

            stories = $http.get('./json/stories.json')
                    .success(function(data) {
                        stories = data;

                    })
                    .error(function(data, status) {
                        alert(data);
                        alert(status);
                    });
            factory.getStories = function() {
                return stories;
            };
            factory.getStory = function(id) {
                return stories[id];
            };
            factory.getPage = function(id, page) {
                return stories[id].pages[page];
            };
            return factory;
        }])

最后这一行将 JSON 文件中的数据加载到要在部分执行的作用域中

 $scope.page = Stories.getPage($scope.param.id - 1, $scope.param.pageNo - 1);

据我所知,没有什么明显的错误 正在加载的 JSON 是

"PageNo": 1,
"text": "Cough, splutter, slobber </br> Who are you? What do you want?",
"image": "img/story-1/jpg/1.jpg",
"sound_background": "sound/story-1-sound/Story1A.aif",
"sound_voiceover": "sound/story-1-voiceover/Story1-01.mp3"

谁能看到我看不到的东西

【问题讨论】:

  • 它是否包含在对象字面量{ ... }中?
  • 是的,它是一个较大的 JSON 文件的一部分,这对这里来说太大了
  • 嗯,我看到了一个有趣的可重复结果,当我: 1. ctrl-c 你显示的内容 2. ctrl-v 进入 JsonLint 并在不包含 {} 的情况下进行验证,它不会 3 . 括在 {} 中并验证,它仍然显示错误,但显示不同 4. 咳嗽后取出空白,然后验证我对这种行为没有任何解释。
  • @Terry 我不确定你的意思
  • @Terry 当整个 JSON 文件在其中时验证良好,并且每次我对文档进行更改时都会这样做。不知道为什么一个部分不起作用,但我还是找到了问题,感谢您的帮助

标签: javascript angularjs


【解决方案1】:

您可以将 {{}} 与 ng-bind-html 和 ng-bind-html-unsafe 一起使用。

只需将大括号括在 单引号 中,如下所示:

<div id="story-text" ng-bind-html="'{{page.text}}'" ></div>

您甚至可以将其与过滤器结合使用

<div id="story-text" ng-bind-html="'{{page.text | uppercase}}'" ></div>

【讨论】:

    【解决方案2】:

    好的,所以我发现如果 ng-bind-html-unsafe 的值是字符串,则显然不能使用 {{}}。我的猜测是 angular 试图将其评估为函数或导致问题的东西

    所以

    <div id="story-text" ng-bind-html-unsafe="{{page.text}}" ></div>
    

    应该是

    <div id="story-text" ng-bind-html-unsafe="page.text" ></div>
    

    【讨论】:

    • 不,它会将其评估为字符串并尝试使用字符串作为键获取值,例如$scope['Cough, splutter....'] +1 反正
    • 如果将“text”中的每个逗号替换为 ,它甚至可以验证我在之前的评论中所做的事情。
    • 非常感谢,这是我需要的修复程序。
    猜你喜欢
    • 2019-02-09
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 2019-10-28
    • 2019-01-17
    • 1970-01-01
    相关资源
    最近更新 更多