javascript - Angular $resource get 与 $get

标签 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

...然后在我的 Controller 中:

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

但是

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

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

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

最佳答案

getsavequeryremovedelete这5个常用方法> 在 $resource 类中可用,可以直接在 House 类上调用。

虽然 saveremovedelete 方法可以通过 $ 前缀访问 House 类/资源,使我们可以轻松地对任何实例执行 CRUD 操作。

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

考虑这个例子:

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

类似地用于其他方法,如 saveremove。我不确定 $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 实例,您可以轻松地提供删除 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>

在你的 Controller 中:

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

这只是一个简单的示例,它演示了何时使用实例操作与何时使用实例操作的用例。类操作,它明确指出在上面的示例中使用实例操作会更干净。

关于javascript - Angular $resource get 与 $get,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33754896/

相关文章:

javascript - 哈皮 : How to send image

javascript - 配置 sails 服务器以使用 html5Mode?

node.js - 无法读取未定义的属性“错误”。有什么问题?

java - 我们可以对 REST 服务进行 UDP 调用吗

java - 如何将图像从服务器发送到客户端?

javascript - 使用 jQuery 将 HTML 表中的整列数据提取到数组中

javascript - Firebase 功能配置不会部署

javascript - Angular 广播初始化太早

google-maps-api-3 - 如何在 AngularJS 中异步加载谷歌地图?

javascript - 使用boundingSphere进行碰撞检测