0

Я пытаюсь использовать следующий код для связи с успокоительной службой:Угловой ресурс с целочисленным параметром создает неправильный URL

$scope.makeRequest = function(){ 
    params = {}; 
    params['3'] = 'X'; 
    params['length'] = 5; 

    var resource = $resource('/foo', {}); 
    var result = resource.query(params, function(){ 
     console.log(result); 
    }); 
} 

Этот запрос работает, и вызывает ожидаемый URL: http://localhost:3000/foo?3=X&length=5

Однако, когда целое поле является значение поля «длина» минус один:

$scope.makeRequest = function(){ 
    params = {}; 
    params['4'] = 'X'; 
    params['length'] = 5; 

    var resource = $resource('/foo', {}); 
    var result = resource.query(params, function(){ 
     console.log(result); 
    }); 
} 

Этот фрагмент игнорирует поле «длина», и делает запрос на: http://localhost:3000/foo?4=X

Мои вопросы:

  1. Где это поведение взялось?
  2. Есть ли лучший способ сделать этот запрос? Могу ли я избежать множества целочисленных параметров, учитывая, что мне понадобится больше одного?

ответ

0

Вы попробуйте просто создать буквальный объект, как это:

params = {'4':'X', 'length': '5'} 
+0

Это имеет тот же результат. Объект params создается правильно, проблема заключается в том, как ресурс делает запрос. И я никак не мог бы использовать это, потому что я хотел создать объект params динамически. – Alin

+0

О, я вижу, но только одна мысль: в чем смысл строить объект params с числовыми значениями вместо строки, представляющей это число? Это имеет для вас какой-то смысл? –

+0

На самом деле, это была проблема. Если значение для 'length' имеет строковый тип, оно работает. Спасибо, я до сих пор не знаю, почему это происходит. – Alin