Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度$resource get vs$get_Javascript_Angularjs_Rest_Get_Ngresource - Fatal编程技术网

Javascript 角度$resource get vs$get

Javascript 角度$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

我使用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
$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.类操作的用例,它清楚地说明了在上面的例子中使用实例操作将更简洁