推入JSON突然无法正常工作

时间:2015-07-08 11:40:08

标签: javascript html json angularjs ionic-framework

我是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>

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

我之前在Controller中有了整个服务代码,然后用于正常工作的代码。我想我必须对我传递给服务中的函数的参数做错了。

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

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

  1. 服务已实例化,JSON存储在您的服务范围内
  2. 控制器已实例化,将数组从People.List()复制到rootScope.items
  3. 对rooScope.items中的每个元素重复ng-repeats - 不是对于People-service中项目数组中的每个元素
  4. 有人输入新讯息
  5. 此消息将添加到您使用People.addComment的服务中的项目。
  6. 步骤5只会更改服务中的项目,而不会更改rootScope中的项目。这就是ng-repeat没有添加新元素的原因。
  7. 要使这两个范围保持同步,请向控制器添加一个功能:

    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:[]});添加新人,并添加items[i].msg.push("This is a new message");

    的消息