我在其他有效的switch case语句中使用了相同的语法。我基本上创建了一个空对象,并开始向其中添加键值对:

var vs = $scope;
vs.toggleTimeSpan = function(string) {

    vs.time.span = {};

    switch(string) {
        case '1h':
            // vs.time.span[1h] = true;
            vs.time.span.1h = true;
            break;

        case '1d':
            vs.time.span.1d = true;
            break;

        case '1m':
            vs.time.span.1mo = true;
            break;

        case '1y':
            vs.time.span.1yr = true;
            break;

        case 'max':
            vs.time.span.max = true;
            break;
    }
};




这是我打算使用vs.time.span对象的地方:

<ul class="timescale">
    <li ng-class="{'active':time.span.1h}"
        ng-click="toggleTimeSpan('1h')">1 h</li>

    <li ng-class="{'active':time.span.1d}"
        ng-click="toggleTimeSpan('1d')">1 d</li>

    <li ng-class="{'active':time.span.1mo}"
        ng-click="toggleTimeSpan('1mo')">1 mo</li>

    <li ng-class="{'active':time.span.1yr}"
        ng-click="toggleTimeSpan('1yr')">1 yr</li>

    <li ng-class="{'active':time.span.max}"
        ng-click="toggleTimeSpan('max')">max</li>
</ul>

最佳答案

您不能使用以数字开头的键名。变量应以字母或$或_开头。尝试使用名称one_hour而不是1h重命名密钥,它应该可以工作。

关于javascript - 为什么我的case语句 bool 分配中出现非法 token 错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30082937/

10-09 14:12