2016-05-02 45 views
0

我正在学习Angular,并且正在构建一个使用$ resource来处理数据的服务。我可以使用query()来获取数据列表,但现在我想将其过滤为只包含特定项目的列表。我在我的asp.net MVC代码中创建了一个方法来调用,它需要2个参数(sectionId和typeId),但我没有看到角度调用的方法。我的断点永远不会打在我的asp.net代码中。我的角度呼叫如下:

(function() { 
'use strict'; 

testModule.factory('InventoryRepository', ['$resource', InventoryRepository]); 

function InventoryRepository($resource) { 
    return { 
     get: function (sectionType, typeId) { 
      return $resource('/mySite/GetInventoryGrid/:sectionType/:typeId', {sectionType: '@sectionType', typeId: '@typeId'}, { 
       query: {method: 'GET', isArray:true} 
      }).query(); 
     }, 
     save: function (inventoryItem) { 
      return $resource('/mySite/SaveInventoryItem').save(inventoryItem); 
     }, 
     remove: function (inventoryItem) { 
      return $resource('/mySite/RemoveInventoryItem').save(inventoryItem); 
     } 
    } 
} 
})(); 

保存和删除方法工作正常,我只是不知道如何让查询处理参数。那么这个结果返回给我的呼叫控制器:

vm.Inventories = InventoryRepository.get(sectionType, typeId); 

我看到调用不工作作为我在Chrome击穿时进入InventoryRepository的get方法。使用Fiddler我看到用500返回进行的调用,它似乎没有通过参数。

更新,我固定它通过改变以下内容: 从我的控制器:

vm.Inventories = InventoryRepository.get({ sectionType: sType, typeId: typeId}); 

和我的服务get方法:

  get: function (params) { 
      return $resource('/mySite/GetInventoryGrid?sectionType=:sectionType&typeId=:typeId', { sectionType: '@sectionType', typeId: '@typeId' }, { 
       query: {method: 'GET', isArray:true} 
      }).query({ sectionType: params.sectionType, typeId: params.typeId}); 
     }, 

我没有意识到的是,get方法调用当它传入get时,将2个参数合并为1个对象。

回答

1

您没有将参数传递给query()方法。

get: function (sectionType, typeId) { 
    return $resource('/mySite/GetInventoryGrid/:sectionType/:typeId', {sectionType: '@sectionType', typeId: '@typeId'}, { 
     query: {method: 'GET', isArray:true} 
    }).query({sectionType: sectionType, typeId: typeId}); 
      ///^^^^^^^^ 
}, 
+0

我打算用修复程序更新我的问题。 – Paritosh