在ng-click函数中编码对象值

时间:2015-07-02 22:13:25

标签: javascript angularjs parsing

我有一个ng-click调用函数,如下所示:

ng-click="vm.getTasks({status: 67})"

我有一系列不同的状态需要调用不同的元素,其中一个是

status: 69|71

如何正确解析此问题?第一个状态和其他类似状态(2位数字)工作正常。

我不能这样做:

ng-click="vm.getTasks({status: 69|71})"

2 个答案:

答案 0 :(得分:4)

ng-click参数评估为javascript

67 is valid JS number type

但是

69|71

是表达式69“按位OR赋值”71.在这种情况下,结果为71。

如果要传递多个数字,则必须是有效的javascript表示

理想情况下数组

[69, 71]

或其他有效表达式,例如字符串

"69|71"

答案 1 :(得分:0)

在你的模板中:

ng-click="vm.getTasks({status: [69, 71]})"

在您的控制器中:

$scope.vm.getTasks = function(obj) {
    var encoded = '';
    angular.forEach(obj.status, function(value, key) {
        if (key === 0) {
            encoded = encoded + value
        } else {
            encoded = encoded + '|' + value;
        }
    });

    // make call to backend using encoded
}

我个人更喜欢这个,因为它隐藏了这样一个事实,即服务器期待一些奇怪的东西,并且让你更明显地表达出对其他开发者有多种状态这一事实。但您也可以使用上面指出的字符串方法