繁体   English   中英

推入JSON突然不起作用

[英]Pushing into JSON suddenly not working

我是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);
    }
    }

下面的代码在我的服务中称为“人”:

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>

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

之前,我已经在Controller内拥有了Service的全部代码,然后这些代码就可以正常工作了。 我想我传递给服务中函数的参数一定做错了。

有人可以帮我吗?

因此,您的应用程序的工作流程如下:

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

为了使这两个范围保持同步,请向您的控制器添加一个函数:

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.push({name: 'Judith', msg:[]}); 并且您可以添加带有items[i].msg.push("This is a new message");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM