编程语言
首页 > 编程语言> > javascript – Angular $resource get vs $get

javascript – Angular $resource get vs $get

作者:互联网

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

我可以做这个:

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

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

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

有什么不同?我该如何使用它们? $get方法的主要用途是什么?

解决方法:

$resource类中提供了5种常见的get,save,query,remove和delete常用方法,可以直接通过House类调用.

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

将其与Java方法进行比较,即没有$的所有5种方法都是Java中的静态方法,而带有$前缀的所有3种方法(保存,删除和删除)都是实例级方法.

考虑这个例子:

// 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});

类似于其他方法,如保存和删除.我不确定$get方法是否可用,因为这确实不需要.如果您认为在MVC架构中,为什么需要一个实例方法来获取实例上的单个记录.

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

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(或任何资源)实例,如在Houses的列表页面中.

因此,如果您正在迭代数百个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>

在你的控制器中:

$scope.deleteHouse = function(uuid) {
    House.delete({uuid: uuid});
};

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

标签:javascript,rest,angularjs,get,ngresource
来源: https://codeday.me/bug/20190623/1271487.html