кодирование значения объекта в функции ng-click

0

У меня есть ng-click, вызывающий функцию следующим образом:

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

У меня есть ряд различных статусов, которые мне нужно призывать к различным элементам, один из которых

status: 69|71

Как я правильно разбираю это? Первый статус и другие подобные ему (2-значные номера) работают нормально.

Я не могу просто так:

ng-click="vm.getTasks({status: 69|71})"
Теги:
parsing

2 ответа

4

Параметр ng-click вычисляется как javascript

67 is valid JS number type

но

69|71

выражение 69 "Побитовое присвоение" 71. В этом случае результат равен 71.

Если вы хотите передать несколько номеров, должно быть допустимым представление javascript

Идеально массив

[69, 71]

или другое допустимое выражение, например, строка

"69|71"
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
}

Мне лично это нравится немного больше, потому что он скрывает тот факт, что сервер ожидает чего-то странного и позволяет более четко выразить тот факт, что для других разработчиков есть несколько статусов. Но вы также можете использовать строковый подход, как указано выше

  • 1
    я думаю, obj.status.join('|') - лучшее решение

Ещё вопросы

Сообщество Overcoder
Наверх
Меню