如何仅将两个属性传递给$ scope变量

问题描述:

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; 

这是传递给第一行中的注释的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":"[email protected]", 
"created_at":"2015-04-24T22:49:21.797Z", 
"updated_at":"2015-05-09T03:04:27.739Z", 
"username":"vinivini"}}] 

如何将此函数添加到您的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(); 
+0

这真是棒极了!我只是有点头,但我应该在我的后端解决这个问题。我不应该将用户的详细信息传递给服务属性。因为这可能会变成安全问题。我打算实施这一点。 – vinibol12

+0

的确,你的前端只应该得到它所需要的东西。如果它不需要使用/显示注释中的其他信息,则不要给它。 – UncleDave