У меня есть ng-click, вызывающий функцию следующим образом:
ng-click="vm.getTasks({status: 67})"
У меня есть ряд различных статусов, которые мне нужно призывать к различным элементам, один из которых
status: 69|71
Как я правильно разбираю это? Первый статус и другие подобные ему (2-значные номера) работают нормально.
Я не могу просто так:
ng-click="vm.getTasks({status: 69|71})"
Параметр ng-click вычисляется как javascript
67 is valid JS number type
но
69|71
выражение 69 "Побитовое присвоение" 71. В этом случае результат равен 71.
Если вы хотите передать несколько номеров, должно быть допустимым представление javascript
Идеально массив
[69, 71]
или другое допустимое выражение, например, строка
"69|71"
В вашем шаблоне:
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
}
Мне лично это нравится немного больше, потому что он скрывает тот факт, что сервер ожидает чего-то странного и позволяет более четко выразить тот факт, что для других разработчиков есть несколько статусов. Но вы также можете использовать строковый подход, как указано выше
obj.status.join('|')
- лучшее решение