gpt4 book ai didi

javascript - 插入 JSON 突然不起作用

转载 作者:行者123 更新时间:2023-12-03 09:37:25 24 4
gpt4 key购买 nike

我是 AngularJS 的初学者,在将数组插入 JSON 时遇到问题。 (我希望我使用了正确的术语)

//I have a JSON that looks like this
var items = [
{name:[
{names: 'John', msg:[""]}, {names: 'Dolly', msg:[""]}
]}
];

以下代码位于 Controller 内:

$rootScope.items = People.list();
$rootScope.name = "John";

for(var i=0;i<$rootScope.items.name.length;i++)
{
if (name== $rootScope.items.name[i].names)
{
People.addcomment(user.comment,i);
}
}

以下代码位于我的名为“People”的服务中:

this.addcomment = function(comment,x) {
items[0].name[x].msg.push(comment);
}

this.list = function () {
return items[0];
}

JSON 在服务中声明。 HTML代码如下:

<textarea placeholder="Enter comment" ng-model="user.comment"></textarea>

<button ng-repeat = "x in items.name" ng-if="name==x.names"
ng-click="addcomment(user,name)">Submit</button>

现在,我的问题是,单击“提交”按钮后,我在 textarea 中输入的“消息”没有存储在与“John”对应的“msg”数组中(在 JSON 内部)。出了什么问题?

我之前在 Controller 中拥有服务的完整代码,并且该代码当时可以正常工作。我想我传递给服务中函数的参数一定犯了一些错误。

有人可以帮我吗?

最佳答案

所以您的应用程序的工作流程如下:

  1. 服务已实例化,JSON 存储在您的服务范围内
  2. Controller 已实例化,将数组从 People.List() 复制到 rootScope.items
  3. ng-repeats 对 rooScope.items 中的每个元素重复,而不是对 People-service 中的 items 数组中的每个元素重复
  4. 有人输入新消息
  5. 此消息将通过 People.addComment 添加到您服务中的项目中。
  6. 第 5 步仅更改服务中的项目,而不更改 rootScope 中的项目。这就是 ng-repeat 不添加新元素的原因。

要保持这两个范围同步,请向 Controller 添加一个函数:

function updateList() {
$rootScope.items = People.list();
}

在调用 People.addComment() 后调用此方法。

最后,也许这只是一个意见,你应该改变你的 JSON 结构。如果您像这样设置数据,就会变得更清楚:

var items = [
{name: 'John', msg:[]},
{name: 'Dolly', msg:[]}
];

现在你有了一个对象数组。您的 People.list() 函数现在返回 items,您可以通过调用 items.push({name: 'Judith', msg:[]}); 添加新的 Person > 您可以使用 items[i].msg.push("This is a new message");

添加一条消息

关于javascript - 插入 JSON 突然不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31291564/

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