Javascript 角度$resource get vs$get
我使用AngularJavascript 角度$resource get vs$get,javascript,angularjs,rest,get,ngresource,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; // afte
$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
$scope.deleteHouse = function(uuid) {
House.delete({uuid: uuid});
};
但是
资源实例中存在奇怪的$get
方法
house.$get(...) // what is $get?
有什么区别?我如何使用它们?
$get
方法的主要用途是什么?在$resource
类中提供了5种常见的方法get
、save
、query
、remove
和delete
,它们可以直接在House
类上调用
在保存
的同时,删除
和删除
方法可以通过$
前缀在房屋
类/资源的实例上访问,这使我们能够轻松地在任何实例上执行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
实例,那么如果使用实例操作,您可以轻松提供删除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.类操作的用例,它清楚地说明了在上面的例子中使用实例操作将更简洁