【问题标题】:Error: [$parse:syntax] Syntax Error: Token '{' is an unexpected token错误:[$parse:syntax] 语法错误:令牌“{”是一个意外的令牌
【发布时间】:2019-02-09 19:48:25
【问题描述】:

我在 AngularJS 方面不是那么好,所以也许这个问题很容易解决,但我还没有找到解决方案,这让我发疯了。

我不得不将项目中的 AngularJS 版本从 1.2.28 更新到 1.3.15,然后开始出现错误。现在我的导航栏在移动模式下无法正常工作。

错误是Error: [$parse:syntax] Syntax Error: Token '{' is an unexpected token at column 18 of the expression [expander.submenu_{{ $index }}.toggle()] starting at [{{ $index }}.toggle()].

我该如何解决?

有问题的文件是:

ul.show-on-large(data-context-menubar)
    li(gp-aria-role="menuitem" role="menuitem")
        a.nav-primary-item(title='Home',ui-sref-opts="{location: false}",  ui-sref='subscription.location.home' ng-click="expander.collapse(); menu.cancel();") Home
    li(ng-repeat='folder in rootFolders track by folder.Id' ng-class="{'megamenu-hover': hover==folder.Id}" ng-mouseenter="menu.show(folder.Id)" ng-mouseleave="menu.cancel()")
        .nav-primary-item(ng-if="folder.hasChildren" gp-aria-role="menuitem" role="menuitem" aria-haspopup="true" aria-owns="submenu_{{ $index }}" ng-click="expander.submenu_{{ $index }}.toggle()")
            | {{ folder.Name }}
            i.icon-down-open
        a.nav-primary-item(ng-if="!folder.hasChildren" ui-sref-opts="{location: false}" ui-sref="subscription.location.folder({ type: 'folder', locationId: '{{ folder.Id }}' })" gp-aria-role="menuitem" role="menuitem")
            | {{ folder.Name }}
        .panel.megamenu(ng-if="folder.hasChildren" id="submenu_{{$index}}" gp-aria-role="menu" role="menu" ng-show="hover==folder.Id || expander.submenu_{{ $index }}.state")
            .step3.large_3.show-on-large(ng-if="folder.Featured.length > 0" ng-repeat='item in folder.Featured track by item.Id')
                a.panel.megamenu-featured(ui-sref-opts="{location: false}", title="Link to {{item.title}}" ui-sref="subscription.location.content({ type: '{{item.Type}}', locationId: '{{ item.Id }}' })" gp-aria-role="menuitem" role="menuitem" ng-click="expander.collapse(); menu.cancel();")
                    img(ng-src='{{ imageSrc(item.ImageId) }}', alt='Feature thumbnail' class="megamenu-thumb")
                    b.epsilon.uppercase.primary-color Featured Article
                    p {{ item.Name }}
            .large_3(ng-repeat='column in folder.Columns track by $index')
                ul.nav-megamenu-secondary(data-context-submenu)
                    li(ng-repeat='subFolder in column track by subFolder.Id')
                        a(gp-aria-role="menuitem" role="menuitem" ui-sref-opts="{location: false}", ui-sref="subscription.location.folder({ type: 'folder', locationId: '{{ subFolder.Id }}' })" ng-click="expander.collapse(); menu.cancel();")
                            | {{ subFolder.Name }}

【问题讨论】:

  • $index 是从哪里来的? (你不能把 {{$index}} 放在你的 ng-click 方法中 - 它说:语法错误)
  • @IsraGab 我没有做这段代码,但据我所知(也许我错了),这个$index来自ng-repeat
  • 你确定以前的代码可以工作吗?
  • @IsraGab 是的,我不知道它是如何工作的。

标签: angularjs coffeescript syntax-error


【解决方案1】:

在 JavaScript 中,可以使用方括号交替访问对象的属性。试试这个:

ng-click="expander['submenu_' + $index ].toggle()"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多