gpt4 book ai didi

javascript - 向 Angular 对象添加属性

转载 作者:行者123 更新时间:2023-11-28 06:55:34 24 4
gpt4 key购买 nike

我正在运行一个 Angular 应用程序,该应用程序从 Web API 服务中提取数据。 API 以 JSON 形式返回对象,Angular 服务(通过 $http.get() )将它们作为对象数组返回到 Controller 。很正常的事情。

我想要做的是向每个返回的对象添加一个名为“Selected”的属性。此属性纯粹用于 GUI 目的(是否在 UI 中选择了对象),不需要以任何方式保留。我认为最简单的事情就是循环返回的对象数组并添加它。所以我的代码如下所示:

function getData() {
myService.getData()
.then(function(data) {
$scope.myData = data.results;
// Add a "Selected" property to each object
$.each($scope.myData, function(item) {
item.Selected = false;
});
}

当到达“item.Selected = false”行时,它会抛出一条错误消息,指出“无法分配给只读属性 Selected”。

我不清楚为什么“选定”是只读的?我不知道 Angular 在读取数据时是否会进行一些时髦的对象处理?我在这里做错了什么?或者我应该以完全不同的方式来处理这个问题?

注意(我想避免必须使 Selected 成为原始对象的一部分,因为它不代表与该对象相关的任何内容)。

最佳答案

要向对象添加属性,请使用 underscorejs ,

"each _.each(list, iteratee, [context]) 别名:forEach迭代元素列表,依次将每个元素生成一个 iteratee 函数。如果传递了一个迭代对象,则它会绑定(bind)到上下文对象。每次调用 iteratee 时都会使用三个参数:(元素、索引、列表)。如果 list 是 JavaScript 对象,则 iteratee 的参数将为 (value, key, list)。返回链接列表。”

“扩展_.extend(目标,*源)将源对象中的所有属性复制到目标对象,并返回目标对象。它是按顺序排列的,因此最后一个源将覆盖前面参数中同名的属性。”

$scope.myData = data.results;
// Add a "Selected" property to each object

_.each($scope.myData, function(ent) {
_.extend(ent, {
Selected : false
});
});

关于javascript - 向 Angular 对象添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32596490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com