【问题标题】:how to pass only two properties to a $scope variable如何仅将两个属性传递给 $scope 变量
【发布时间】:2015-05-09 04:38:00
【问题描述】:

ANGULARJS 问题:

我有一个对象数组,我需要将它传递给我的 $scope 变量。对我特别造成问题的属性是 user 属性 因为它包含名称和电子邮件等元素,它会影响我在 HTML 中设置的过滤器过滤我想要显示的对象的方式。该对象是一个笔记列表,我希望能够按笔记中的内容(标题和正文)过滤它们

我尝试使用以下代码从对象中删除属性用户,但这不起作用。 $scope.notes 仍然加载该属性。

理想情况下,我应该只能将标题和正文属性传递给$scope.notes。关于如何有效地做到这一点的任何想法?

 var notes = notesService.notesObjectInService;
    for (var i = 0;  i < notes.length; i++) {
        delete notes[i].user;
    };

    $scope.notes = notes;

这是在第一行传递给 notes 的 json 对象。

[{"id":184,
"title":"Mari",
"body":"Mae",
"created_at":"2015-05-09T03:23:04.250Z",
"updated_at":"2015-05-09T03:23:04.250Z",
"user_id":1,
"user":{"id":1,
"email":"vini@vini.com",
"created_at":"2015-04-24T22:49:21.797Z",
"updated_at":"2015-05-09T03:04:27.739Z",
"username":"vinivini"}}]

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    把这个功能加入你的notesService怎么样?

    function getSummaryNotes() {
      var returnValue = [];
    
      for (var i = 0;  i < notes.length; i++) {
        var note = notes[i];
        returnValue.push({title: note.title, body: note.body});
      }
    
      return returnValue;
    }
    

    其中 notes 是您的一系列笔记,大概是服务可以访问的。

    那么你可以这样做:

    $scope.notes = notesService.getSummaryNotes();
    

    【讨论】:

    • 效果很好!我只是提醒我应该在后端解决这个问题。我不应该将用户详细信息传递给服务属性。因为这可能会变成一个安全问题。我打算实现它。
    • 确实,您的前端应该只提供它需要的东西。如果它不需要使用/显示笔记中的其他信息,那就不要给它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 2019-02-25
    • 2019-06-05
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多