【问题标题】:actions in $resource in angularjsangularjs 中 $resource 中的操作
【发布时间】:2014-09-12 16:50:52
【问题描述】:

我在 ProductController 中有一个带有以下方法的 webapi 后端:

     [HttpGet]
    [Route("api/product/FindName")]
    public Product FindName(string name){
     return name & "Hello "
    }

我正在尝试在前端使用 $resource。

var resource = $resource('api/product/:id', {});

resource.query() 将使用 GetALL() 方法返回在服务器端公开的所有项目。这很好用。

$resource 中的 {action} 到底是做什么的?我已经看到了 POST 的示例,但是如果设置了怎么办

var resource = $resource('api/product/:id', {}, { FindName: { method: 'GET', params: { name: 'phone' } } });

这会在后端调用方法 FindName 吗?或者它到底是做什么的,如果我在方法中设置了“GET”,我的意思是参数。

我叫

 resource.FindName({ name: 'phone' }, function () {

    });

但是后端没有被解雇。我看到提琴手向服务器请求的调用是

Demo/api/product?name=phone 

【问题讨论】:

  • 我看错了,如果我们需要调用服务器端方法,那么必须提供action中的URL var resource = $resource('api/product/:id', { }, { FindName: { url: 'api/product/FindName', 方法: 'GET', 参数: { name: 'phone' } } });将调用服务器端方法。并且没有 url 的操作将仅引用已初始化的资源并对其进行处理..我对吗?所以这些是我们在客户端定义的资源上的一种自定义方法.. ??

标签: angularjs asp.net-web-api resources


【解决方案1】:

资源声明不正确。应该是

var resource = $resource('api/product/:id', {}, { FindName: { method: 'GET', params: { id: 'phone' } } });

这会将id 占位符默认为值phone

现在可以调用

resource.FindName({}, function () {  //gets api/product/phone

    });

或覆盖id 部分

resource.FindName({id:'tablet'}, function () {  //gets api/product/tablet

    });

【讨论】:

    【解决方案2】:

    Resource 有一个内置的 GET 函数,无需定义已添加到 $resource 的额外 FindName 操作即可使用。

    如果您将 webapi 上的路由更改为

    [HttpGet]
    [Route("api/product/{name}")]
    public Product FindName(string name){
        return name & "Hello "
    }
    

    然后您可以使用这样的资源从该路由中获取数据。

    var resource = $resource('api/product/:id', {}, {});
    
    resource.get({ id: 'phone' }, function () {
    
    });
    

    如果您希望名称参数在两者上都匹配,您可以将 :id 更改为 :name 并在 resource.get 中将 id 更改为名称。

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2014-01-23
      • 1970-01-01
      • 2015-08-31
      • 2013-08-29
      • 2015-04-12
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 2016-08-02
      相关资源
      最近更新 更多