我是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中有了整个服务代码,然后用于正常工作的代码。我想我必须对我传递给服务中的函数的参数做错了。
有人可以帮帮我吗?
答案 0 :(得分:1)
因此,您应用的工作流程如下:
要使这两个范围保持同步,请向控制器添加一个功能:
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");