Angular $资源获得vs $ get

时间:2015-11-17 10:42:57

标签: javascript angularjs rest get ngresource

我使用Angular $resource服务,但我不清楚为什么主查询有两种不同的方法。

我可以这样做:

var House = $resource('/house/:uuid', {}); // create resource
var houseUuid = '123';
var house = new House.get({uuid: houseUuid}); // create resource instance

...然后在我的控制器中:

$scope.house = house; // after get request to server data will be putted to model

BUT

资源实例中有奇怪的$get方法

house.$get(...) // what is $get?

有什么区别?我该如何使用它们?什么是$get方法的主要用例?

1 个答案:

答案 0 :(得分:4)

可以调用的get类中提供了5种常用方法savequeryremovedelete$resource直接在House上。

虽然可以使用save类/资源实例上的remove前缀访问delete$House方法,这样我们就可以轻松在任何实例上执行CRUD操作。

将其与Java方法进行比较,即没有$的所有5种方法都是Java中的静态方法,而所有3种方法(saveremovedelete)都是{{1前缀是实例级方法。

考虑一下这个例子:

$

// Define a class/resource var House = $resource('/house/:uuid', {}); // Get an instance var houseInstance = Hourse.get({uuid: "xyz"}); // Delete the instance on any event like click using the `$` prefix (which works directly on the instance) houseInstance.$delete() // Or delete that instance using the class: House.delete({uuid: houseInstance.uuid}); save等其他方法类似。我不确定remove方法是否可用,因为这确实不需要。如果您认为在MVC架构中,为什么需要一个实例方法来获取实例上的单个记录。

同样,您可以定义自己的自定义实例和类(静态)级别方法:

$get

现在你可以致电:

var House = $resource('/house/:uuid', {}, {
    foo: {
         method: "POST",
         url: "/house/show/:uuid"
    },
    update: {
        method: "PUT"
    }
});

随意使用任何方法即(类或实例级别操作),但我建议使用实例级别(即使用House.foo({uuid: "xyz"}, {houseNumber: "1234"}); // Or you can write this: var house = new House(); house.uuid = "xyz"; house.houseNumber = "1234"; house.$foo(); // Or any custom method house.$update(); 前缀),其中您有多个$实例(或任何资源)就像在房屋的列表页面。

因此,如果您正在迭代数百个House实例,则可以轻松提供在使用实例操作时删除House的选项。例如:

使用实例操作(在此示例中推荐)

House

但是在这种情况下你也可以使用类级别的动作(在这个例子中不推荐使用)

使用集体诉讼(本例中不推荐)

<div ng-repeat="house in houses">
    {{house.name}}
    <a href="house.$delete()">Delete this house</a>
</div>

在您的控制器中:

<div ng-repeat="house in houses">
    {{house.name}}
    <a href="deleteHouse(house.uuid)">Delete this house</a>
</div>

这只是一个简单的简单示例,它演示了何时使用实例操作v.s.的用例。类动作,它清楚地表明在上面的例子中使用实例动作将更清晰。