加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – Restangular – 嵌套资源

发布时间:2020-12-17 07:26:25 所属栏目:安全 来源:网络整理
导读:使用restangular处理嵌套资源时的最佳做法是什么? 即 Restangular.one("accounts",1).one("projects",1).get().then(function (project) {project.getList("proofs").then(function(proofs){ project.proofs = proofs; _.each(proofs,function(proof){ proo
使用restangular处理嵌套资源时的最佳做法是什么?
Restangular.one("accounts",1).one("projects",1).get().then(function (project) {
project.getList("proofs").then(function(proofs){
    project.proofs = proofs;
    _.each(proofs,function(proof){
        proof.comments = proof.getList("comments");
    });
});
$scope.project = project;

});

这将允许我很好地访问视图内的每个.

<li ng-repeat="proof in project.proofs">Total: {{proof.comments.length}}</li>

如果我想要对项目进行更新,它会将所有内容发送到项目REST端点(包括所有校样和所有proofs.com).

project.name = 'New Name!';
project.put();

这让我觉得我必须实施一些错误的东西,并且有一种更好的方法可以解决它吗?

没有用这样的东西直接定义所有的$scope(未经测试)?

Restangular.one("accounts",1).get().then(function (project) {
project.getList("proofs").then(function(proofs){
    $scope.projectProofs = proofs;
    _.each(proofs,function(proof){  
      $scope.proofComments[proof.id].push(proof.getList("comments"));
    });
});
$scope.project = project;

});

建议的最佳做法是什么?

有两种选择:编写自定义PUT方法或从对象中删除属性

选项#1:编写自定义PUT方法

放置元素的默认方法将提交所有已设置的参数.

您可以在Restangular源代码中看到这一点,其中每个资源都使用一组默认方法进行初始化,这些方法接受所有参数,不进行任何过滤以删除参数.

您可以创建一个自定义方法,从对象中剥离“proofs”属性,或者仅在请求中选择某些字段进行PUT.

选项#2:从对象中删除属性.

在放入()项目之前,您可以执行以下操作:

/* ... code to get the project object and the nested proof objects ... */

project.name = 'New Name!';

delete project.proofs;
project.put();

delete关键字将从对象中删除该属性.然后,当您调用put()时,项目对象将不再具有嵌套资源. You can read more about the delete keyword here.

您可以在控制台上打印出对象,以确切了解您要向服务器添加的内容:

console.log(project);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读