带表达式的ng-switch

时间:2015-10-24 16:39:48

标签: javascript html angularjs angularjs-ng-repeat ng-switch

所以我有一个可以是任何类型的变量。按类型我的意思是它可以是一个字符串或一个对象。我试图根据类型运行不同的代码。

我的变量名为range,它在JavaScript中定义。我尝试过的是。 vars是我要循环播放的对象。

<tr ng-repeat="(key, range) in vars">
    <td ng-switch="typeof range">
        <span ng-switch-when="string">It's a string</span>
        <span ng-switch-when="object">It's an object</span>
        <span ng-switch-default>It's something else</span>
    </td>
</tr>

但这会抛出无效的表达式错误。最好的方法是什么?

2 个答案:

答案 0 :(得分:4)

试试这个...我还添加了对不同类型变量的检测:stringarrayobjectnumbernull和{ {1}}。

undefined
"use strict";
angular.module('myApp', [])
.controller("myController", function() {
    this.vars = {
        key1: "String",
        key2: "String2",
        key3: 42,
        key4: {
            name: "Mr. Anderson"
        },
        key5: [1, 2, 3, 4, 5],
        key6: null,
        key7: undefined
    };
    this.getTypeOf = function(value) {
        if(value === null) {
            return "null";
        }
        if(Array.isArray(value)) {
            return "array";
        }
        return typeof value; 
    };
});

答案 1 :(得分:1)

控制器:

$scope.checkType = function(obj){    
 return typeof obj;
};

HTML:

 <tr ng-repeat="(key, range) in vars"
        <td ng-switch="checkType(range)">
            <span ng-switch-when="string">It's a string</span>
            <span ng-switch-when="object">It's an object</span>
            <span ng-switch-default>It's something else</span>
        </td>
    </tr>