2013-09-16 5 views
7

Документация here говорит, что:угловой ресурс перезапись URL не работает

url – {string} – action specific url override. 
The url templating is supported just like for the resource-level urls. 

Я хотел бы использовать эту хорошую возможность, я попытался это:

angular.module("experience", ['ngResource']) 

    .factory('Experience', function ($resource, identity) { 

    return $resource("api/experiences/:id", {}, { 
     queryAll : { 
      method : 'GET', 
      url  : 'api/companies/' + identity.id + '/experiences', 
      isArray : true 
     } 
    }); 
}); 

Вы видите, что я пытаюсь перезаписать url для метода queryAll. но это не работает, запрос по-прежнему отправляет url api/experience. это действительно поддерживается, или я делаю что-то неправильно? спасибо за любую помощь.

+0

Какой версии угловых вы используете? Я успешно использую эту функцию с Angular 1.1.4. Разница в моем случае - это параметрический исходный URL-адрес, то есть у меня есть что-то вроде '$ resource (« api/xxx », ...)' вместо вашего '$ resource (« api/xxx /: id », ..) ' –

+0

спасибо за ваш комментарий, я использую новейшую версию 1.2. Я думаю, api/xxx или api/xxx /: id ничего не затрагивает? – bingjie2680

+0

Я предполагаю, что это должно * не повлиять ни на что, но вы никогда не знаете :) Кстати, есть еще одна разница: я использую POST, а не GET. –

ответ

2

У меня очень похожая проблема в моем проекте. URL-адрес не может быть переопределен в действиях ресурсов. Я использую Angular 1.2.0, и он должен поддерживать функцию с 1.1.4. Поэтому я проверил ссылку Angular API, CHANGELOG, но не повезло. Затем я впился в исходный код и заметил, что логики переопределения url нет. Это основная причина проблемы. Я обновил Angular до 1.2.0, но я забыл обновить angular-resource.js до соответствующей версии.

Итак, длинный рассказ короткий: проверить версию углового-resource.js

1

Я не уверен, если вы CANN свойства доступа к identity в Переопределить URL, но вы можете попробовать что-то вроде этого:

return $resource("api/experiences/:id", {}, { 
    queryAll : { 
     method : 'GET', 
     url  : 'api/companies/:id/experiences', 
     params : { id: identity.id }, 
     isArray : true 
    } 
}); 

id: identity.id говорит Угловая использовать свойство идентификатора identity, (если это существует).

Смежные вопросы