如何仅将两个属性传递给$ 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();
这真是棒极了!我只是有点头,但我应该在我的后端解决这个问题。我不应该将用户的详细信息传递给服务属性。因为这可能会变成安全问题。我打算实施这一点。 – vinibol12
的确,你的前端只应该得到它所需要的东西。如果它不需要使用/显示注释中的其他信息,则不要给它。 – UncleDave