1

Это то, что я писал в моем factories.js:AngularJS 1.x Как использовать ресурс для получения массива результатов?

app.factory('CustomerCompany', function($resource){ 
    return $resource('/customer_companies/:id.json', {id: "@_id"}, { 
     'query':{method: 'GET', isArray:false}, 
     'getByCustomerAccount':{ 
      method: 'GET', 
      params: {customer_account_id: customer_account_id}, 
      isArray:true, 
      url:'/customer_companies/get_by_account/:customer_account_id.json' 
     } 
    }); 
}); 

Потому что я хочу, чтобы принести список customer_companies, принадлежащий к определенной customer_account поэтому мне нужно поставить customer_account_id.

В моих controllers.js,

app.controller('customerAccountEditController', function($scope, CustomerCompany) { 
    $scope.data = {}; 
    var path  = $location.path(); 
    var pathSplit = path.split('/'); 
    $scope.id  = pathSplit[pathSplit.length-1]; 
    var customer_account_id = $scope.id; 

    $scope.list_of_companies = []; 

    CustomerCompany.getByCustomerAccount({customer_account_id: customer_account_id}, function(data){ 
     console.log(data); 
     //$scope.list_of_delegates.push(data); 
    }); 
}); 

Я получаю customer_account_id не определен.

Где я ошибся?

ответ

1

Я думаю, что вам не нужно определить params внутри $resource & тогда URL будет становится url:'/customer_companies/get_by_account/customer_account_id.json' & при вызове метода вам нужно передать customer_account_id, из {customer_account_id: customer_account_id} так, что бы создать URL с customer_account_id=2 somtehing вот так.

Сервис

'getByCustomerAccount':{ 
     method: 'GET', 
     //params: {customer_account_id: customer_account_id}, //removed it 
     isArray:true, 
     url:'/customer_companies/get_by_account/:customer_account_id' 
} 

Контроллер

CustomerCompany.getByCustomerAccount({customer_account_id: customer_account_id + '.json'}, function(data){ 
    console.log(data); 
    //$scope.list_of_delegates.push(data); 
}); 
+0

Я получил его на работу. Ваш ответ помог. Спасибо. –

+0

Просто обратите внимание, что вам не нужно проходить в .json, как вы предложили. Я думаю, вы можете просто оставить его там внутри URL-адреса. –

+0

Не стесняйтесь редактировать ответ. Я соглашусь с тем, что редактирую..и это также поможет другим, кто в такой проблеме. –

0

params: {customer_account_id: customer_account_id},

customer_account_id вы пытаетесь присвоить здесь не определен.

Попробуйте params: {customer_account_id: '@customer_account_id'},

1

Это работает для меня.

controllers.js

CustomerCompany.getByCustomerAccount({customer_account_id: customer_account_id}, function(data){ 
     console.log(data); 
     //$scope.list_of_delegates.push(data); 
    }); 

services.js

app.factory('CustomerCompany', function($resource){ 
    return $resource('/customer_companies/:id.json', {id: "@_id"}, { 
     'query':{method: 'GET', isArray:false}, 
     'getByCustomerAccount':{ 
      method: 'GET', 
      isArray:false, 
      url:'/customer_accounts/:customer_account_id/customer_companies.json' 
     } 
    }); 
}); 

Что изменилось:

  1. на стороне сервера, я решил использовать /customer_accounts/:customer_account_id/customer_companies для отображения результатов.
  2. Я понял, что возвращаемые данные всегда находятся в объектной форме, поэтому я изменил isArray в $resource на false.
  3. я пройти Params нравится, как Панкай Parkar предложил в контроллере, когда я звоню getByCustomerAccount

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

  • Нет связанных вопросов^_^